如何用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)
...全文
512 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个

这是为啥?难道是需要模拟浏览器才能爬?
【资源说明】 基于Flask+Pyecharts实现的实习僧网站数据可视化源码+项目说明.zip IDE: Pycharm Professional、VScode、 Python version :3.9.13 Database:Mysql version-5.8 其它工具:phpmyadmin ``` 食用方法: csdn下载该项目并解压 本项目所需依赖环境已在requirements.txt文件中。 **使用前请先创建虚拟环境!** (具体创建方法自行百度,建议创建在项目根目录下) 然后在虚拟环境内安装requirements.txt的依赖,运行命令: ```shell pip install -r requirements.txt ``` 建议使用pycharm专业版运行项目 如若使用vscode等其它编辑器请先激活虚拟环境,然后再在虚拟环境下执行主程序文件 ```shell (venv)powershell:python ./app.py ``` 执行之后打开本地环回地址127.0.0.1:5000即可访问页面,如果需要进行公网访问请将host设置为0.0.0.0,端口随意但切勿与其它服务撞车。 ## 可视化流程大致如下: 1.寻找数据,收集数据并处理好数据。 2.对数据进行分析,以做出合理的图表。 3.先对数据生成图表页面,存放在**templates**文件夹 4.在app.py文件中对设定文件进行文件路由调用以及负载均衡(**如果需要**) # 所需技术栈 __HTML、Python、JavaScript、Mysql、flask__ **本项目为河池学院大数据20班可视化课程项目设计,分为几大模块:** ## 1.数据爬取 数据爬取文件夹位于项目根目录下的.\pa_chong\ 主程序文件为spider-demo.py,在运行前需要对所爬取的网页进行网页结构分析,对所需数据进行xpath定位或者re正则定位,提取我们所需要的数据。 然后,分析服务器是否存在反爬虫,比如字体反爬、ip封锁、验证码等,定制化相应的措施 对于实习僧这个网站来说,反爬措施为字体反爬与IP封锁,我们仅需对其get(access)、token(parmas)、等做处理即可,然后进行字体重编码,因为其网页前端的字体为自定义字体。 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

37,721

社区成员

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

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