萌新xpath的爬虫,用着很舒服

我用的是Pycharm编辑器,3.5的python。br/>首先给大家看看源码与成果
#####@Time:2018/10/25
#####@Author:DQ
import requests
from lxml import etree
headers = {"User-Agent" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1 Trident/5.0;"}
html = requests.get("http://tu.duowan.com/tu", headers=headers).text
xpath_url = etree.HTML(html)
picture_url = xpath_url.xpath("//ul[@id=‘pic-list‘]/li/a/img/@src")
for i in picture_url:
picture_code = i[40:-4]
with open("./picture/%s.jpg" % picture_code, "wb") as file:
file.write(requests.get(i).content)

import requests
from lxml import etree
首先两行导入两个库,为了接下来可以使用requests与xpath,不多解释。

headers = {"User-Agent" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1 Trident/5.0;"}
这一行是为了给爬虫加一个头,让服务器认为自己是一个头,接下来会被调用。

html = requests.get("http://tu.duowan.com/tu", headers=headers).text
requests.get(url).text的用法,获取源码,很常用,为了获得源码

xpath_url = etree.HTML(html)
picture_url = xpath_url.xpath("//ul[@id=‘pic-list‘]/li/a/img/@src")
第一行是为了将源码转换为xpath可以识别的格式,很重要,新人很容易忘记,导致后面出错。第二行就是常规的xpath语法了。
想学可以进入下面这个链接看看http://www.w3school.com.cn/xpath/index.asp

for i in picture_url:
picture_code = i[40:-4]
with open("./picture/%s.jpg" % picture_code, "wb") as file:
file.write(requests.get(i).content)
第一行就是简单的for循环,随便看看书或者教程都可以。
第二行是字符串的截取,为了获得图片的非同一标识符。你可以选择任何方式命名,看个人喜好了。
第三行with open() as f:结构,打开一个文件并且作为变量赋值给f。open("./picture/%s.jpg" % picture_code, "wb")是打开当前目录的picture目录,这个目录要线创建。当然你也可以用这行代码一起实现.os.makedirs(‘./picture‘),但是你还得导入os模块,会复杂一点,当然很好用,看个人喜好。如果是一次爬取东西很多很推荐,特别是需要创建很多不同的目录去创建东西的时候,可扩展性比较好。
创建以图片编码为名字的文件设置为wb可写如二进制代码格式,因为图片很多都是二进制格式。
第四行就是简单的文件写入了,写入requests.get(i).content内容,如果想好看一点可以在前面加上一个picture = requests.get(i).content,后面就可以直接file.write(picture)。都是个人喜好,但是注意不要忘记加上get(i)后面这个content,如果不加的话,picture等于一个返回值
兴许是200,这是对的,也可能其他错误返回值。
open用法想学可以参考下面这个链接http://www.runoob.com/python/python-func-open.html

原文地址:http://blog.51cto.com/13603552/2308728

时间: 2024-10-08 04:36:43

萌新xpath的爬虫,用着很舒服的相关文章

萌新笔记——C++里创建 Trie字典树(中文词典)(二)(插入、查找、导入、导出)

萌新做词典第二篇,做得不好,还请指正,谢谢大佬! 做好了插入与遍历功能之后,我发现最基本的查找功能没有实现,同时还希望能够把内存的数据存入文件保存下来,并可以从文件中导入词典.此外,数据的路径是存在配置文件中的.甚至,还想尝试类似自动补全的功能.当然了,是做一个比较low的补全,比如传入"编程",能够得到"软件"."学习"."学习网站"."入门"四个字符串.但是传入"编"不会得到&quo

腾讯、网易、新浪新闻网站爬虫编写记录及评论格式分析

0 前言 先说说看这篇博客你能知道什么:1 腾讯.网易.新浪不同新闻的地址格式以及评论内容的地址格式(返回数据为json的异步接口):2 一些比较通用的设计方法,对软件设计的菜鸟可能有帮助: 之前也说了要写这边博客,现在终于写出来了.我的毕业设计的指导老师说毕设论文的字数不够--所以我决定把这些本不应该出现在论文中的实现细节凑到论文中.至于下面说到的东西要解决什么问题,各位可以先看看这个网站(我毕设的初步结果,目前还在优化中,包括代码结构还有UI设计):http://reetseenews.du

一个萌新的自白

浑浑噩噩的毕业已经过了半年,在这半年时光自己很没有方向感,都在尝试改变自己,但时光已不再,心却未能平静.一次偶然的机会想进IT行业来尝试自己是否能在这里让自己的心海不在一片涟漪.毕竟朦胧的青葱岁月早已逝去,是时候在这个青春真当时,让自己留下值得的回忆. IT行业是一个靠自己实力才能立足的行业,对于我来说是一个比较大的挑战,我是真正完全的电脑萌新,当时抱着很复杂的心态来学习,一边想着自己应该迈开这一步,或许会收到自己想要的那一份充实,另一方面有考虑自己是否能够适应,即使在学习第一节课时,我都在问自

萌新--关于vue.js入门及环境搭建

十几天闭关修炼,恶补了html跟css以及JavaScript相应的基础知识,恰巧有个群友准备做开源项目,愿意带着我做,但是要求我必须懂vue.js,所以开始恶补vue.js相关的东西. 在淘宝上买了相关视频,前两章简介听得懵懵懂懂的,能够勉强理解.到第三章,开始有案例之后,整个人就懵了,为啥老师的一个程序文件夹那么多东西,我就一个可怜兮兮的html??等等,老师说这node.js是什么? 不是另外一个框架吗?webpack又是啥?... 一连串懵逼之后,终于发现,视频不适合我.开始找其他的途径

小萌新云主机面板体验大比拼

本人小白,最近使用着几款云主机管理工具体验,针对管理云主机工具体验作出对比.此文旨在一来给诸位小白劈斧开山(老技术员可以绕路了),二来作为自己花了那么多时间的记录分享. 本文可以理解为从一个萌新的角度对云主机管理工具的体验对比. 为什么找云主机管理工具? 找管理工具管理主机.站点和安装会便捷很多.可想而知,有工具软件能用的肯定能代替部分重复搬砖工作. 找了挺多的工具软件的,各家法宝都不一样,而且部分内容了解不是很深入,这里只作为一个小白自己整理的对比工具来看.了解不足或者片面,欢迎评论指出 因为

萌新的旅行-

Description zstu的萌新们准备去自助旅行,他们租了一辆吉普车,然后选择了n个城市作为游览地点.然后他们惊喜的发现他们选择的城市刚好绕城一个环. 也就是说如果给所有城市按照0,1,2,--,n-1编号,0号城市和n-1号城市是相邻的,并且只能从i号城市去(i+1)%n号城市. 已知每个城市可以充油gas(i),从 i 到 (i+1)%n 城市耗油 cost(i). 假设这辆吉普车没有的油箱一开始是空的,并且没有上限. 没有油的话自然就不能继续旅行了,这个问题让萌新们非常困扰.作为优秀

Python写的网络爬虫程序(很简单)

Python写的网络爬虫程序(很简单) 这是我的一位同学传给我的一个小的网页爬虫程序,觉得挺有意思的,和大家分享一下.不过有一点需要注意,要用python2.3,如果用python3.4会有些问题出现. python程序如下: import re,urllib strTxt="" x=1 ff=open("wangzhi.txt","r") for line in ff.readlines(): f=open(str(x)+".txt&

Ingress 记萌新的第一次连多重(xjbl)

之前为了升七,ArtanisWei学长告诉我可以去紫金园雕塑[这是什么地方啊],顺带靠卖萌骗了一桶key 于是屁颠屁颠的跑去按照群里攻略开始连多重[馒头 by handsomepeach],连了一百年...这攻略怎么让人xjb跑啊QwQ 于是连出来这个 于是桃大就让绿军来炸 然后就没有然后了[躺],手机噼里啪啦一阵乱响爹地的江山就没了[哭唧唧] 晚上不服气又来了一次,矮油我滴妈晚上一个人真口怕,passerg就陪我摸了一遍就跑路了我勒个去 然后今天下定决心决定自己来连一次多重 于是萌新的第一次多

萌新笔记——C++里创建 Trie字典树(中文词典)(插入、查找、遍历、导入、导出)(上)

写了一个词典,用到了Trie字典树. 写这个词典的目的,一个是为了压缩一些数据,另一个是为了尝试搜索提示,就像在谷歌搜索的时候,打出某个关键字,会提示一串可能要搜索的东西. 首先放上最终的结果: input: 1 编程入门 2 编程软件 3 编程学习 4 编程学习网站 output: 1 char : 件 2 word : 编程软件 3 char : 习 4 word : 编程学习 5 char : 网 6 word : 编程学习网 7 char : 门 8 word : 编程入门 其实这里不应