python抓取网页数据(Python3中提供了url.request和HTML的解析模块 )
优采云 发布时间: 2021-10-19 01:03python抓取网页数据(Python3中提供了url.request和HTML的解析模块
)
Python 3 提供了 url 打开模块 urllib.request 和 HTML 解析模块 html.parser 模块。但是html.parser模块的功能比较简单,很难满足今天解析网页内容的需求。 Beautiful Soup 4 是一个非常强大的 HTML 和 XML 文件解析 Python 库。并且提供了非常完整的文档()。
Beautiful Soup 4 的安装及相关问题
Beautiful Soup 的最新版本是4.1.1 可以在这里获取()。我正在使用 Mac OSX。在本平台安装Beautiful Soup,只需解压安装包,运行setup.py文件即可:
$ python3 setup.py install
如果在安装过程中出现ROOT_TAG_NAME=u'[document]'这一行的SyntaxError“Invalid syntax”,则需要将Python 2代码转换为Python 3:
$ 2to3-3.2 -w bs4
网址中的中文编码问题
在URL中,经常看到收录中文。比如网上搜索2012-08-09北京到丽江的北京到丽江机票网址:
Beijing&searchArrivalAirport=丽江&searchDepartureTime=2012-08-09
如果直接将此 URL 传递给 urllib.request.urlopen,则会导致 TypeError。解决方法是构造一个参数名和参数值的元组,并使用urllib.parse.urlencode方法对其进行编码。示例代码如下:
1 url ='http://flight.qunar.com/site/oneway_list.htm'
2 values ={'searchDepartureAirport':'北京','searchArrivalAirport':'丽江','searchDepartureTime':'2012-07-25'}
3 encoded_param = urllib.parse.urlencode(values)
4 full_url = url +'?'+ encoded_param
网页内容抓取:以下示例代码展示了当百度搜索关键词“网球”时如何抓取网页内容。
1 import urllib.parse
2 import urllib.request
3 from bs4 import BeautifulSoup
4
5 url ='http://www.baidu.com/s'
6 values ={'wd':'网球'}
7 encoded_param = urllib.parse.urlencode(values)
8 full_url = url +'?'+ encoded_param
9 response = urllib.request.urlopen(full_url)
10 soup =BeautifulSoup(response)
11 soup.find_all('a')