python-3.x 如何让scraper抓取不止一个google页面

rqqzpn5f  于 2022-12-15  发布在  Python
关注(0)|答案(1)|浏览(127)

我希望能够设置网页的数量,使刮刀在谷歌爬行。
我不知道从哪里开始,我并不真的使用刮刀一次打开多个页面,而是一次请求一个页面。

import requests
import re

keywords = ["site:facebook.com", "@gmail.com", "sports"]

url = 'https://google.com/search?q={}'.format('+'.join(keywords))
print(url)

response = requests.get(url)

regex = r"[\w._-]+@[\w._-]+\.[\w._-]+"

emails = re.findall(regex, str(response.content))

emails_list = list(set(emails))

print(emails_list)

刮第一页的时候效果很好。

e4eetjau

e4eetjau1#

仅供参考,Google will block you if you scrape them。这对于很少的请求可能是好的,但是如果它看起来像一个机器人,你可能会被IP阻止。Maybe consider something like this用作代理。
在任何情况下,如何实际做到这一点:
您可以通过传递start GET参数对google响应进行分页。
例如,如果您有这样的请求:
https://www.google.com/search?q=test
第二页为:
https://www.google.com/search?q=test&start=10
第三页为:
https://www.google.com/search?q=test&start=20
您可以使用urlencode创建URL:

>>> from urllib.parse import urlencode
>>> "https://www.google.com/search?{}".format(urlencode({'q': " ".join(["site:facebook.com", "@gmail.com", "sports"]), "start": 10}))
'https://www.google.com/search?q=site%3Afacebook.com+%40gmail.com+sports&start=10'

相关问题