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://www.uj5u.com/houduan/273239.html
標籤:python
上一篇:Java第三章-陣列
