xpath的使用方法以及python爬取数据的保存

来源:互联网 发布:linux 安装gzip 编辑:程序博客网 时间:2024/06/05 02:24

前面写了几篇关于自己爬虫时的进度以及遇到的问题,今天系统的爬取了一个网站之后又对爬虫方法有了更好的认识,所以今天我会尽量用明晰的语言来给大家介绍这些方法。

首先说明下我要爬取的内容:http://www.zbj.com/appdingzhikaifa/sq10054601.html          打开这个网址会有很多店铺,我的第一步就是爬取这个网址中店铺所对应的公司名,代码在我前面的文章中有提到,这块就不展示了。然后  http://www.qichacha.com  我会在这个网站搜索这些公司名,你会发现会有很多同名不同地区的公司,而我接下来就是需要爬下这些所有公司名的信息。


我觉得对于任何一个页面的信息爬取的方法无非Beautifulsoup或者webdriver 的方法,我自己感觉我没有太弄懂beautifulsoup,所以有时还不是很熟练,接下来我就重点介绍webdriver中的xpath。

import selenium.webdriver as webdriver            #webdriverd 所需要的库
>>> driver=webdriver.Chrome()                     #打开浏览器                         ,这里建议大家使用谷歌浏览器,根据自己对应电脑版本去官网下载对应版本就好,当然还要安装一个webdriver,百度同样可以搜索下载到,然后还有环境的配置等。。。(好像走题了)


results = driver.find_elements_by_xpath("//div[@class='witkey-name j-witkey-name']/a")          #重点是这一句代码,//表示相对路径,/表示绝对路径,其中你找到你所需要信息的模块,比如‘div class’。而后面的a就是你找到的模块中的带有a的text文字。查找到后print就可以

至于怎么转到http://www.qichacha.com 用这个网址搜索到的公司内容,同样的,python中网址是可以相加的,设立一个base_url就可以。


爬下你的内容之后就是保存了,我看了很多方法学习到的:with open ('1,txt','wb') as f:         f.write()

中间的1.txt你也可以改成xlsx格式等。保存路径默认在你的python文件夹中。当然你在使用with open 时需要加上这三行代码:

import sys

>>> reload(sys)

>>> sys.setdefaultencoding('utf-8')


我这里还有一个问题没有解决就是f.write写时只会保存出来最后一页信息,貌似会覆盖前面的信息,大家有解决的方法可以和我探讨。


最后附上代码"

import urllib,sys
import selenium.webdriver as webdriver

import sys

>>> reload(sys)

>>> sys.setdefaultencoding('utf-8')


>>> driver=webdriver.Chrome()
>>> driver.get('http://www.zbj.com/appdingzhikaifa/sq10054601.html')
>>> results = driver.find_elements_by_xpath("//div[@class='witkey-name j-witkey-name']/a")
>>> res=[]
>>> for result in results:
if result.text not in res:
res.append(result.text)


a=[]
>>> for r in res:
s=r.encode("gbk")
base_url='http://www.qichacha.com/search?key='
a.appendbase_url+urllib.quote(s.decode(sys.stdin.encoding).encode('utf8')))



>>> print a
>>> for r in a:
driver.get(r)
results=driver.find_elements_by_xpath("//p[@class='m-t-xs']")
for result in results:
print result.text


                  #接下来就是转码问题




 
for r in a:
driver.get(r)
result1=driver.find_elements_by_xpath("//a[@class='ma_h1']")
for result in result1:
print result.text




for r in a:
driver.get(r)
result1=driver.find_elements_by_xpath("//a[@class='ma_h1']")
        with open('1.txt','wb') as f:
             for result in result1:
 f.write(result)




原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 上古卷轴5数值修改错了怎么办 小时候打针把屁股脂肪打扁了怎么办 大繁盛满腹市场2对话时闪退怎么办 月经来了一个月了还不停怎么办 对办公室的异性老师产生好感怎么办 上古卷轴5任务NPC老打我怎么办 1岁半宝宝走路内八字怎么办 最近几个月例假周期都25天怎么办 从pr导出的视频大小不一样怎么办 合作医疗收据丢了不给报销怎么办 沧州新生医院—老人腹胀了该怎么办 内痔疮术后一个月吃了点辣椒怎么办 肛周脓肿手术后大便干怎么办 月经半个月了还没干净怎么办 房东出租违建房不退房租怎么办 上海公租房住满5年后怎么办 监狱对死缓犯人延长转为无期怎么办 手机号码办理的宽带不想要了怎么办 朋友诈骗罪被关看守所了该怎么办 打架被拘留家里有孩子没人看怎么办 刑事拘留满37天给逮捕了怎么办 因打架被拘留十五天释放后会怎么办 犯罪人在拘留所生了小孩怎么办 我申请了进京证更换车辆怎么办 丈夫去世前想把财产留给妻子怎么办 假货中通代收货款发现是假货怎么办 注册志愿者时身份证被使用该怎么办 双眼皮贴贴的皮肤送了怎么办? 满60岁社保末满十五年怎么办 眼角膜少了一块怎么办应该吃什么 左右胸相差一个罩杯左右怎么办 穿一字肩的裙子没有无肩内衣怎么办 农业网柑橘被奄24小时怎么办 钱包被偷了小偷抓到了钱不认怎么办 快高考了很想学却没有动力怎么办? 孩子高三了学习状态不好怎么办 离婚时对方说把钱都花了怎么办 挂科太多学校不给毕业证怎么办 大专挂科太多学校让延期毕业怎么办 安卓手机老是收到垃圾短信怎么办 高铁站行李拉安检仪上应该怎么办