Я получаю разные результаты в зависимости от того, запущен ли мой Spider из Ubuntu или из Windows. Код такой же.
Ubuntu запущена на моем облачном сервере. Он может получить количество результатов поиска, но оба получают разные результаты.
Кроме того, при запуске в Ubuntu может произойти сбой. Кто-то сказал мне, что это может быть вызвано поваром ie, но я не понимаю, почему.
Это мой код:
import requests
from bs4 import BeautifulSoup
import json
import re
#
class baidu(object):
def __init__(self,keyword):
self.keyword = keyword
#get result number
def GetNumber(self):
base_url = 'https://www.baidu.com/s?'
params = { 'wd':self.keyword,
'ie': 'UTF-8',
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
'Host': 'www.baidu.com',
'is_referer': 'https://www.baidu.com/',
'Referer': 'https://www.baidu.com/',
'is_xhr': '1',
'X-Requested-With': 'XMLHttpRequest',
'Sec-Fetch-Site': 'same-origin',
'Connection': 'keep-alive',
'Sec-Fetch-Mode': 'cors',
'Cookie': ''
}
#,cookies=cookieDict
content = requests.get(base_url,params=params,headers=headers)
#print(content.url)
content.encoding = 'uft-8'
try:
span_content = BeautifulSoup(content.text,'html.parser').find(class_="nums_text").get_text()
except Exception as e:
print('fail')
print(e)
return 0
nums = re.findall('\d+',span_content)
num = int(''.join(nums))
return num
if __name__ == '__main__':
keyword = '酒精、小苏打'
p = baidu(keyword=keyword).GetNumber()
print(p)
windows:
收起 工具 时间 10 900 000
Ubuntu:
为 您 找到 相关 结果 约 3860 个