我尝试了其他类型的css选择器和xpath,所以我假设我可能错误地使用了库,但是没有其他文档没有告诉我。我也尝试过其他bs4函数,比如find_all,但是很多函数都没有返回任何其他结果。任何类型的帮助将不胜感激,干杯!
代码:
import bs4 as bs
from requests import get
query = input('Please Enter Your Topic of intrest: ')
first_part = query.replace(" ", "%20")
second_part = query.replace(" ", "+")
results= "0"
num_of_pages = int(input('How many pages do you want scraped? '))
for i in range(num_of_pages):
results= int(results)
results += 10
gsearch_url = "https://www.google.com/search?q={}#q={}%3F&start={}&*".format(first_part, second_part, results)
sauce = get(gsearch_url)
soup = bs.BeautifulSoup(sauce.text, 'lxml')
for url in soup.select('.r a'):
print(url.get('href'))
返回:
/url?q=http://www.codingdojo.com/blog/9-most-in-demand-programming-languages-of-2016/&sa=U&ved=0ahUKEwja3a21w7fSAhWSZiYKHdLGA9gQFggdMAI&usg=AFQjCNFmDl_1epVQRmDfc4y5MWFeNvrPQg
/url?q=https://fossbytes.com/best-popular-programming-languages-2017/&sa=U&ved=0ahUKEwja3a21w7fSAhWSZiYKHdLGA9gQFgghMAM&usg=AFQjCNEKhYqx1FbKl_Wu-9EoMYd3e9i_Dw
/url?q=http://www.bestprogramminglanguagefor.me/&sa=U&ved=0ahUKEwja3a21w7fSAhWSZiYKHdLGA9gQFggnMAQ&usg=AFQjCNHmbzuLwFo_egaWnbXSOW4p-Fva3g
/url?q=http://www.codingdojo.com/blog/9-most-in-demand-programming-languages-of-2016/&sa=U&ved=0ahUKEwja3a21w7fSAhWSZiYKHdLGA9gQFggyMAU&usg=AFQjCNFmDl_1epVQRmDfc4y5MWFeNvrPQg
etc....
答案 0 :(得分:2)
首先,抓取谷歌的搜索结果会破坏他们的服务条款。因此,在互联网上的某个地方,伟大的字母表摇着一根手指,皱起眉头。哦,是的,你可能也会在某些时候用验证码打耳光。
其次, ahem 纯粹是为了解决任何剩余的学术好奇心,你得到的结果不是由BeautifulSoup引起的。这实际上就是Google的回归。您可以通过执行print(soup)
并仔细阅读html来检查它。您会注意到所有href
的内容与您要打印的内容完全匹配。
为什么这与您在浏览器中看到的不同? javascript
的魔力! requests
库无法处理,因此您无需进行所有客户端处理即可看到结果。