python抓取网页数据的三种方法

admin 2021年8月24日18:30:30评论286 views字数 1094阅读3分38秒阅读模式

一、正则表达式提取网页内容

解析效率:正则表达式>lxml>beautifulsoup

代码:

import  re

import  urllib2

 

urllist  = 'http://example.webscraping.com/places/default/view/United-Kingdom-239'

 

html =  urllib2.urlopen(urllist).read()

num =  re.findall('<td class="w2p_fw">(.*?)</td>',html)

print  num

print  "num[1]: ",num[1]



二、BeautifulSoup方法提取网页内容

代码如下:

from  bs4 import BeautifulSoup

import  urllib2

 

urllist  = 'http://example.webscraping.com/places/default/view/United-Kingdom-239'

 

html =  urllib2.urlopen(urllist).read()

#html格式进行确定和纠正

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

#找出tr标签中id属性为places_area__row的内容,如果把find改成findall函数则会把匹配所#有的内容显示出来,find函数只匹配第一次匹配的内容。

tr =  soup.find('tr',attrs={'id':'places_area__row'})

td =  tr.find('td',attrs={'class':'w2p_fw'})

#取出标签内容

area =  td.text

print  "area: ",area


三、lxml

lxml库功能和使用类似BeautifulSoup库,不过lxml解析速度比beautifulsoup快。

代码:

import  lxml.html

import  urllib2

 

urllist  = 'http://example.webscraping.com/places/default/vie

w/United-Kingdom-239'

 

html =  urllib2.urlopen(urllist).read()

tree =  lxml.html.fromstring(html)

td =  tree.cssselect('tr#places_area__row > td.w2p_fw')[0]

area =  td.text_content()

print  area


本文始发于微信公众号(飓风网络安全):python抓取网页数据的三种方法

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年8月24日18:30:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   python抓取网页数据的三种方法http://cn-sec.com/archives/358953.html

发表评论

匿名网友 填写信息