python 爬取菜鸟教程python100题,百度贴吧图片反爬虫下载,批量下载

每天一点点,记录学习
python 爬取菜鸟教程python100题

近期爬虫项目,看完请点赞哦:

1:python 爬取菜鸟教程python100题,百度贴吧图片反爬虫下载,批量下载

2:python爬虫爬取百度贴吧图片,requests方法

3:python 爬虫爬取百度贴吧图片 urllib.request.urlretrieve图片批量下载函数

1:确定要抓取的数据字段(标题,题目与程序分析);
2:分析页面html标签结构;
3:选择实现方法及数据存储位置(存储为文本文件即可);

目标url连 菜鸟教程python100题url连接
https://www.runoob.com/python/python-100-examples.html
但是这个界面只有100道题,并没有,要点击去才有每个标题,题目,程序分析内容,如图:

我们需要的内容是:标题,题目,程序分析内容在这里插入图片描述
在python100例主页面,右键—检查元素,可以看到主页面与每一道题目点进去之后的url链接之间的关系:
在这里插入图片描述
在这里插入图片描述
二者关系显而易见,这样就找到了url的规律
ul = ‘https://www.runoob.com’+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.com/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.com'+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结果如下:
在这里插入图片描述

发布了124 篇原创文章 · 获赞 23 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/YmeBtc/article/details/102324145
今日推荐