如何用xpath直接爬取网页?(网页不下载到本地)

qqblack 2017-01-22 03:32:34
怎么用xpath直接读取网页上的数据啊。下面是我的代码。

几乎是一样,为什么,下载到本地的网页爬取成功,直接爬却爬不到啊

目标网页:http://www.city-data.com/city/Honolulu-Hawaii.html
# -*- coding:utf-8 -*-
import requests
from bs4 import BeautifulSoup
import os
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

#网页下载到本地后的方式(把网址保存为Honolulu.htm)
import codecs
from lxml import etree
f=codecs.open("Honolulu.htm","r","utf-8")
content=f.read()
f.close()
tree=etree.HTML(content)
tourist_attractions = tree.xpath(u'//*[@*="Tourist attractions"]//li')
print len(tourist_attractions)

#网页不在本地
myheaders = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}
foreign_born_link = "http://www.city-data.com/city/Honolulu-Hawaii.html"
res = requests.get(foreign_born_link ,headers = myheaders)
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text,'html5lib')
treex = etree.HTML(soup.text)
tourist_attractions = treex.xpath(u'//*[@*="Tourist attractions"]//li')
print len(tourist_attractions)

print type(soup.text)==type(content)
...全文
513 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinat_34714296 2017-04-07
  • 打赏
  • 举报
回复
前者是,通过浏览器保存下来的html文件,是经过浏览器渲染的。 后者则不是,所以会有不同
qqblack 2017-01-22
  • 打赏
  • 举报
回复
'''换一个网页试试'''
在上面的代码后面补充一段

myheaders = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}
foreign_born_link = "http://www.zengyuetian.com/?p=2182"
res = requests.get(foreign_born_link ,headers = myheaders)
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text,'html5lib')
treex = etree.HTML(soup.text)
# tourist_attractions = treex.xpath(u'//*[@id="content"]/div[2]/div[2]/div[2]')
#上面是我用chrom获取的xpath,居然也爬取不到
tourist_attractions = treex.xpath(u'//*[@class="entry_title"]')
print len(tourist_attractions)

运行结果

唉。。。。
qqblack 2017-01-22
  • 打赏
  • 举报
回复
运行结果

可以,看出,第一种方式正确爬取到结果了(145)个结果。第二种为结果为0个

这是为啥?难道是需要模拟浏览器才能爬?

37,722

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧