Python爬虫实践 —— 7.秘密网鬼故事大全故事爬取(lxml xpath+requests)

因为教程的demo网站糗事百科已经gg(好像是涉及用户私人信息什么的原因),所以我就只好随便找了个网站练手。

前几天学习了部分lxml的用法,主要是etree,因为4.4.2版本的更新,etree现在在ElementInclude包内,直接引用是不行了,并且etree添加了新的parser,调用parse方法时要先实例化HTMLparse方法,当然我这个垃圾爬虫没有用爬取html和数据清洗两个步骤分离,而且demo么没有用多线程,导致爬200个鬼故事,几mb的txt,爬取写入时间真的不是很理想啊(雾,大草),所以说多线程时多么重要。xxxxx

首先哦f12分析下网站源码,要获取的内容和分页网址,因为我们获取的内容都是文字,且都显式显示在网页上,很容易得出规律:

我们要获取的鬼故事内容页面的链接 <a>标签,在<article>标签下,可以使用xpath定位到,(“//article//h2/a/@href”),即可获取到当前页面20个鬼故事的内容页链接

接着打开内容详情页

很容易看到,我们想要的<p>标签文本内容在id = “single”的div下,可以用xpath定位到,(“//div[@id=‘single‘]”//p)

当人内容分页还是一如既往的每页20个,拼接网址也有了,/page/i 就完事了

没抓图片,虽然显然图文无关 xxxxx

然后是代码实现

import requests
from lxml.ElementInclude import etree

for i in range(1, 11):
    url = "https://mimi.kunjuke.com/guigushi/page/" + str(i)
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36"}

    res = requests.get(url, headers=headers).text

    html = etree.HTML(res)
    url_result = html.xpath("//article//h2/a/@href")

    for site in url_result:
        res2 = requests.get(site).text
        html2 = etree.HTML(res2)
        content_result = html2.xpath("//div[@id=‘single‘]//p")
        title_result = html2.xpath("//div[@id=‘single‘]//h2")
        storyName = "H:/GhostStory/"+title_result[0].text+".txt"
        with open(storyName,"wb+") as f:
            f.write(bytes(content_result[0].text, encoding="utf-8"))

很简单的实现,诶呀不用多线程爬这种几kb的txt,真实难受,看来后续还要进一步学习多线程啊

  因为没做日志info或者系统打印台输出和异常管理,嘿嘿,懒狗,手动校验一下吧

爬完校验一下是不是爬了十页两百个鬼故事

打开一个看看,i/o和encoding没写错的话就应该没问题

bingo ,欸,好垃圾哦, 我转了一圈吃完一个肉松饼,这200个鬼故事还没爬完,残念xxxxxx

下次一定,下次一定,下次一定补上 info ,异常和多线程,惭愧地流出了虚假地泪水 喵  >_<!!!

原文地址:https://www.cnblogs.com/liuchaodada/p/12181566.html

时间: 2024-10-05 05:04:44

Python爬虫实践 —— 7.秘密网鬼故事大全故事爬取(lxml xpath+requests)的相关文章

Python爬虫入门【2】:妹子图网站爬取

妹子图网站爬取---前言 从今天开始就要撸起袖子,直接写Python爬虫了,学习语言最好的办法就是有目的的进行,所以,接下来我将用10+篇的博客,写爬图片这一件事情.希望可以做好. 为了写好爬虫,我们需要准备一个火狐浏览器,还需要准备抓包工具,抓包工具,我使用的是CentOS自带的tcpdump,加上wireshark ,这两款软件的安装和使用,建议你还是学习一下,后面我们应该会用到. 妹子图网站爬取---网络请求模块requests 妹子图网站爬取---安装requests 打开终端:使用命令

Python爬虫入门教程 15-100 石家庄政民互动数据爬取

1. 石家庄政民互动数据爬取-写在前面 今天,咱抓取一个网站,这个网站呢,涉及的内容就是 网友留言和回复,特别简单,但是网站是gov的.网址为http://www.sjz.gov.cn/col/1490066682000/index.html 首先声明,为了学习,绝无恶意抓取信息,不管你信不信,数据我没有长期存储,预计存储到重装操作系统就删除. 2. 石家庄政民互动数据爬取-网页分析 点击更多回复 ,可以查看到相应的数据. 数据量很大14万条,,数据爬完,还可以用来学习数据分析,真是nice 经

爬虫入门之爬取策略 XPath与bs4实现(五)

爬虫入门之爬取策略 XPath与bs4实现(五) 在爬虫系统中,待抓取URL队列是很重要的一部分.待抓取URL队列中的URL以什么样的顺序排列也是一个很重要的问题,因为这涉及到先抓取那个页面,后抓取哪个页面.而决定这些URL排列顺序的方法,叫做抓取策略.下面重点介绍几种常见的抓取策略: 1 深度优先遍历策略: 深度优先遍历策略是指网络爬虫会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接.我们以下面的图为例:遍历的路径:A-F-G E-H-I B C D

Python自定义豆瓣电影种类,排行,点评的爬取与存储(进阶)

Python 2.7 IDE Pycharm 5.0.3 具体Selenium及PhantomJS请看Python+Selenium+PIL+Tesseract真正自动识别验证码进行一键登录 一些自动化应用实例请看Selenium+PhantomJS自动续借图书馆书籍 至于GUI的入门使用请看Python基于Tkinter的二输入规则器(乞丐版) 比较综合的GUI例子请看基于Python的参考文献生成器1.0 想了想,还是稍微人性化一点,做个成品GUI出来 起因 没办法,在知乎预告了要做个GUI

Java分布式爬虫Nutch教程——导入Nutch工程,执行完整爬取

Java分布式爬虫Nutch教程--导入Nutch工程,执行完整爬取 by briefcopy · Published 2016年4月25日 · Updated 2016年12月11日 在使用本教程之前,需要满足条件: 1)有一台Linux或Linux虚拟机 2)安装JDK(推荐1.7) 3)安装Apache Ant 下载Nutch源码: 推荐使用Nutch 1.9,官方下载地址:http://mirrors.hust.edu.cn/apache/nutch/1.9/apache-nutch-1

Python爬虫实践 —— 1.对反爬机制的认识

51zxw发布了一个新课程,是今年二月份的,现在总算是辞职空下来时间了,想着学习下爬虫吧,反正学了也不亏.爬虫算是最简单的东西了,爬虫背靠数据挖掘.数据分析和机器学习,与大数据和AI相比显得没那么高大上,随便一个程序员都能写一个的小爬虫.可是,在数据封锁隐藏,反爬机制不断深入的今天,如何设计爬虫分布式运行架构.有效高匿的代理池.反封号防屏蔽.清洗存储有效数据.优化爬取策略.结合大数据技术,更有效率有质量地获取数据等等云云,也不是看似那么简单.因为当今世纪,数据即是一切,小小爬虫,一定程度上成为了

Python爬虫实践 —— 3.利用爬虫提取返回值,模拟有道词典接口

有道词典的web接口,实际上可以用爬虫模拟,输入key,拼接为有道词典接口的formdata,爬取返回值,实际为Ajax动态生成的translation,这样外部来看实现了翻译接口的模拟,相当于爬虫模拟浏览器调用了有道词典web接口,其实讲真的话来说,直接调用有道web接口,传json参数就可以了,不用这么费事,但爬虫模拟了人登陆web,输入关键词,获得翻译结果的过程. 浏览器输入操作,解析有道词典翻译的web接口url和格式 #爬虫模拟调用有道词典web接口调用 from urllib imp

Python爬虫:新浪新闻详情页的数据抓取(函数版)

上一篇文章<Python爬虫:抓取新浪新闻数据>详细解说了如何抓取新浪新闻详情页的相关数据,但代码的构建不利于后续扩展,每次抓取新的详情页时都需要重新写一遍,因此,我们需要将其整理成函数,方便直接调用. 详情页抓取的6个数据:新闻标题.评论数.时间.来源.正文.责任编辑. 首先,我们先将评论数整理成函数形式表示: 1 import requests 2 import json 3 import re 4 5 comments_url = 'http://comment5.news.sina.c

【爬虫】【原创】08 使用简单正则表达式爬取下厨房(早餐,午餐,晚餐)

目的 1)      提取下厨房关键词为(早餐,午餐,晚餐)的菜谱 2)      获取"菜谱链接,图片地址,菜名,材料,七天内多少人做过,作者",存储到MONGODB 3)      对每个菜谱进行网页截图,保存到本地 2.      目标站点分析 网址: http://www.xiachufang.com/ 输入关键词"早餐",发现是跳转链接(暂时没想到这种怎么处理比较好,就单独拿出来处理吧) 午餐和晚餐的网址就比较一致 3.      爬取思路(以午餐为例)