程序员

爬虫实习生面试题

作者:admin 2021-05-06 我要评论

2021年3月26日在Boss直聘和广州XXXX数据公司沟通了一下想面试那家公司的爬虫实习生那家公司给了我如下一份面试题。希望半天时间完成。 试题完成结果不太理想。很...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

2021年3月26日在Boss直聘和广州XXXX数据公司沟通了一下,想面试那家公司的爬虫实习生,那家公司给了我如下一份面试题。希望半天时间完成。

试题完成结果不太理想。很遗憾》》》》》我的解题思路不太符合贵公司要求
在这里分享出来,主要是与大家讨论一下,集思广益,看看大家完成题目的思路和方法是如何的?

以下是我的解答,有一题未能完成,希望大家帮忙解决。

问题1
User-Agent是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA。用较为普通的一点来说:是一种向访问网站提供你所使用的浏览器类型、操作系统及版本、CPU 类型、浏览器渲染引擎、浏览器语言、浏览器插件等信息的标识。请写一段随机ua访问网页的代码

import requests
def CSDN ():
    url = "https://blog.csdn.net"
    headers ={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'}
    response = requests.get(url =url ,headers=headers)
    print(response)
    res = response.text
    print( res)

CSDN()

问题2:写出https://www.conab.gov.br/info-agro/safras/progresso-de-safra 这个页面
所有a标签title属性含有pdf或者xlsx的a标签的xpath规则。
在这里插入图片描述
上面图片只获得了每个excel或pdf文档的下载地址,并未将该页面的所有文件下载保存到本地文件夹中,代码有待改进
最初代码如下:

import requests
from lxml import etree
import time

def func():
    url = "https://www.conab.gov.br/info-agro/safras/progresso-de-safra"
    headers ={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'}
    response = requests.get(url =url ,headers=headers)
    print(response)
    data_txt = response.text
    # print(data_txt)
    date = etree.HTML(data_txt)
    pd_xl = date.xpath('//ul[@class="catItemAttachments"]//li/a')
    print(pd_xl)
    for px in pd_xl:
        time.sleep(1)
        px_url = px.xpath('./@href')[0]
        Url =' https://www.conab.gov.br'+px_url
        name = px.xpath('./@title')[0]
        print('文件名为{},链接为{}'.format(name,Url))

if __name__ == '__main__':
    func()

问题3:http最常见的两种请求get和post,请分别用requests和aiohttp包写出登录jin10页面拿到首页html的代码。

pass """寻求网友详细帮助"""

问题4:请用递归的形式重写下面函数

 def fun(n:int) -> int :
     result = 1
     while n>0 :
         result *= n
         n -= 1
     return result

我的答案

def fun (n:int)->int:
    result = 1
    while n>1:
        return n*fun(n-1)
    else:
        return result
print(fun(6)) #假设传入实参6  结果为720

问题5:完善下面这个函数’’’

def fun(param1: int ,param2:int):
'''param x:int:param1 int:param2
return:返回一个函数,该函数接受一个数字列表, 返回两个列表。
其中第个列表中全是小于param1的数字,第二个列表全是大于param2的数字
'''

我的答案

import random as r
list1 = r.sample(range(10), 10)
print(list1)
min_list =[] #接收全是小于param1的数字
max_list =[] #接收全是大于param2的数字
def fun(param1: int , param2:int ,*args:tuple):
    print(args)
    for num in args:
        for i in num:
            if i < param1 :
                min_list.append(i)
            elif i >param2 :
                max_list.append(i)
    print(min_list)
    print(max_list)

fun (4,6,list1)
#[0, 3, 9, 6, 8, 4, 7, 5, 2, 1]
#[0, 3, 2, 1]
#[9, 8, 7]
;原文链接:https://blog.csdn.net/zylgxt/article/details/115444129

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 20182217刘洪宇EXP3_免杀原理 - 菠菜雨

    20182217刘洪宇EXP3_免杀原理 - 菠菜雨

  • 优雅的交换两个数的值 - xihale

    优雅的交换两个数的值 - xihale

  • OLAP引擎:基于Druid组件进行数据统计

    OLAP引擎:基于Druid组件进行数据统计

  • AOV网与拓扑排序 - gonghr

    AOV网与拓扑排序 - gonghr

腾讯云代理商
海外云服务器