为什么Beautifulsoup显示具有不必要字符的Scrape URL

时间:2017-03-02 09:57:34

标签: web-scraping beautifulsoup python-3.5 google-search

我尝试了其他类型的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....

1 个答案:

答案 0 :(得分:2)

首先,抓取谷歌的搜索结果会破坏他们的服务条款。因此,在互联网上的某个地方,伟大的字母表摇着一根手指,皱起眉头。哦,是的,你可能也会在某些时候用验证码打耳光。

其次, ahem 纯粹是为了解决任何剩余的学术好奇心,你得到的结果不是由BeautifulSoup引起的。这实际上就是Google的回归。您可以通过执行print(soup)并仔细阅读html来检查它。您会注意到所有href的内容与您要打印的内容完全匹配。

为什么这与您在浏览器中看到的不同? javascript的魔力! requests库无法处理,因此您无需进行所有客户端处理即可看到结果。