在Python中使用BeautifulSoup对Google搜索进行网络抓取

问题描述 投票:-3回答:1

正在执行一个项目以自动搜索数千个Google搜索,并能够检查是否“未找到结果”并将其输入到数组中。

使用BeautifulSoup,但无法通过从URL导入HTML来开始使用:

from bs4 import BeautifulSoup
import requests

html = requests.get('www.lifehack.org')
soup = BeautifulSoup(html,'html.parser')

软件包安装正常,但出现错误:

MissingSchema                             Traceback (most recent call last)
<ipython-input-28-8e881302fa25> in <module>
      1 from bs4 import BeautifulSoup
      2 import requests
----> 3 html = requests.get('www.lifehack.org')
      4 soup = BeautifulSoup(html,'html.parser')

C:\Program Files (x86)\Anaconda\lib\site-packages\requests\api.py in get(url, params, **kwargs)
     73 
     74     kwargs.setdefault('allow_redirects', True)

+更多行类似的内容

我不确定如何解决此问题。我希望能够快速将HTML直接插入程序中,而不必将其复制并保存在本地HTML文件中]

非常感谢您的帮助,谢谢。

python web-scraping beautifulsoup google-search-api
1个回答
1
投票

首先,您应该发布完整的错误消息,如果仅发布了部分错误消息,则无法解决此问题。

就是说,可能引起问题的一件事是您的URL需要完全限定。

html = requests.get('http://www.lifehack.org')

实际上,如果您发布了执行代码所得到的全部错误,您将看到类似这样的内容,它将为您提供答案:

MissingSchema:无效的URL'www.lifehack.org':未提供任何模式。也许您是说http://www.lifehack.org

一旦解决,就会遇到另一个问题:

追踪(最近通话):

文件“”,第4行,在汤= BeautifulSoup(html,'html.parser')

文件“ C:\ bs4__init __。py”,init中的第267行elif len(标记)<= 256和(

TypeError:类型为'Response'的对象没有len()

您的html变量是一个Response对象,您不能将其直接传递给BeautifulSoup。您想传递从响应中获得的text

soup = BeautifulSoup(html.text,'html.parser')

故事的寓意:请注意您的错误消息,它们是您的指南。

© www.soinside.com 2019 - 2024. All rights reserved.