python抓取网页数据(Python3中提供了url.request和HTML的解析模块 )

优采云 发布时间: 2021-10-19 01:03

  python抓取网页数据(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')

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线