当前位置:主页 > 查看内容

爬虫实习生面试题

发布时间:2021-05-06 00:00| 位朋友查看

简介:2021年3月26日在Boss直聘和广州XXXX数据公司沟通了一下想面试那家公司的爬虫实习生那家公司给了我如下一份面试题。希望半天时间完成。 试题完成结果不太理想。很遗憾》》》》》我的解题思路不太符合贵公司要求 在这里分享出来主要是与大家讨论一下集思广益看……

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
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐