每天一点点,记录学习
python 爬取菜鸟教程python100题
近期爬虫项目,看完请点赞哦:
1:python 爬取菜鸟教程python100题,百度贴吧图片反爬虫下载,批量下载
2:python爬虫爬取百度贴吧图片,requests方法
3:python 爬虫爬取百度贴吧图片 urllib.request.urlretrieve图片批量下载函数
1:确定要抓取的数据字段(标题,题目与程序分析);
2:分析页面html标签结构;
3:选择实现方法及数据存储位置(存储为文本文件即可);
目标url连 菜鸟教程python100题url连接
https://www.runoob/python/python-100-examples.html
但是这个界面只有100道题,并没有,要点击去才有每个标题,题目,程序分析内容,如图:
我们需要的内容是:标题,题目,程序分析内容
在python100例主页面,右键—检查元素,可以看到主页面与每一道题目点进去之后的url链接之间的关系:
二者关系显而易见,这样就找到了url的规律
ul = ‘https://www.runoob’+herf中的url内容;
用xpath解析源代码里的内容
url_all = html.xpath('//li/a[@target="_blank"]/@href')
这里可以找到101个链接,是因为该页面最下边有道题,可以忽略,最后取时,只取0~99即可;
初始化标签
1:寻找规律,获取标题
name = html1.xpath('//div[@id="content"]/h1')
或者写成
name = html1.xpath('//div[@class="article-intro"]/h1')
因为框中结构相同,用id和class去重都可以
2:获取题目,用string(.)获取全部内容:
title = html1.xpath('//div[@class="article-intro"]/p[2]')[0].xpath('string(.)')
3:获取程序分析,与题目方法相同
texts= html1.xpath('//div[@class="article-intro"]/p[3]')[0].xpath('string(.)')
4:将获取到的name,title,texts都写入txt文件,用with as 的写法
with open('python100题.txt','a',encoding = 'utf-8') as f:
#a,追加模式,打开不存在的文件会,会新建一个文件;不能读
#注意不要用w,因为会覆盖掉,最终只有第100题
f.writelines(name+['\n']) #name是个列表
f.write(title+'\n') #字符串
f.write(texts+'\n')
全部代码如下:
记得给我点赞哦~~~~~
另外还有爬取百度贴吧图片爬虫点击可看批量下载图片的方法
点击可查看反爬虫requests方法下载图片
#爬取python100题
import requests
from lxml import etree
import re
url = 'https://www.runoob/python/python-100-examples.html'
response = requests.get(url)
data = response.text #以文本内容返回str,缺点:中文乱码
#解析
html = etree.HTML(data)
url_all = html.xpath('//li/a[@target="_blank"]/@href') #取到101个的url链接
a=1 #看进程,原始值为1
for i in range(100):
ul = 'https://www.runoob'+url_all[i]
res = requests.get(ul)
data1 = res.content.decode('utf-8')
#初始化
html1 = etree.HTML(data1)
name = html1.xpath('//div[@id="content"]/h1/text()')
title = html1.xpath('//div[@class="article-intro"]/p[2]')[0].xpath('string(.)')
texts= html1.xpath('//div[@class="article-intro"]/p[3]')[0].xpath('string(.)')
with open('/你自己的路径/python100题.txt','a',encoding = 'utf-8') as f:
f.writelines(name+['\n']) #name是个列表
f.write(title+'\n') #字符串
f.write(texts+'\n')
f.write('='*100+'\n') #每道题之间做隔断
print('保存第%d题结束'%a)
a+=1
最终爬取的txt结果如下:
更多推荐
python 爬取菜鸟教程python100题,百度贴吧图片反爬虫下载,批量下载
发布评论