css select pyquery的简单爬取

css select pyquery的简单爬取

本篇文章简单介绍一下一种简单实用的爬虫解析方式—css select的简单爬取,css select解析一般用两种库,一种是beautiful soup库,另一种则是这篇文章用的pyquery库。
首先我们先用pyquery库来实现一个网页内容的爬取,我们首先先打开一个小说的网页,然后点检查,如图所示:
在这里插入asd图片描述
我们想要获取这个小说的文章内容,这时候你用正则或者xpath都不是很理想,而css selset则很简单,代码如下:

  import requests
>>> from pyquery import PyQuery as pq
>>> response=requests.get('http://www.51shucheng.net/wangluo/huaidanshizenmelianchengde/5614.html')
>>> response.encoding=response.apparent_encoding
>>> doc = pq(response.text)
>>> title=doc('#page > div.content.book-body > div > h1').text()
>>> content= content=doc('#page > div.content.book-body > div > div.neirong').text()
>>> print(title)
第一卷 少年热血 第一章 欺负
>>> print(content)
二十世纪九十年代,在J市第二中学教学楼的一层走廊里。
“嘿,小子,把钱都给我拿出来!”两个头发染成花花绿绿的少年把一个身材瘦弱的学生逼在墙角。
学生底下头,小声说:“我没有钱。”
‘啪’两个少年中一个高个的一巴掌打在学生脸上。“草你妈的,别和我罗嗦,快点!”
学生被打得嘴角通红,眼泪不争气的掉下来。这时高个旁边的矮胖少年说:“算了,别打坏了。这小子是我班里学习尖子,哈哈!”
那高个看看学生:“草,看他你熊样吧。学习好有个屁用。”转头对一边的胖子说:“老肥,你去翻翻他兜,我咋不相信他没钱呢!”
膀子‘恩’了一声,来到学生身前说:“谢文东,你把手松开。”原来那学生听见高个少年的话,用手死死抓住裤兜。
见那个名叫谢文东的学生象没听见一样还是用手捂着兜。“草,你当我放屁是不是?”胖子一脚蹬在谢文东的小腹上。谢文东身子重重撞在墙上。胖子把他的手拉开,另支手伸进他裤兜里。拿出一张褶皱的五元钱。
胖子把钱交给高个少年,往地下吐口吐沫:“妈的,给你脸你不要脸。”说完,和高个少年嘻嘻哈哈离开。留下满脸痛苦的谢文东。
谢文东是J市第二中学初三学生,学习努力,头脑聪明,成绩非常优秀,在整个学校都能排在第一。但是性格有些内向,没有什么朋友, 加上身材瘦小,经常受到别人欺负。第二中学在J市不是什么重点中学,学校的管理也很松懈,经常有校外年龄不大的不良少年进出。这 些人年龄都不大,由于各种原因不再上学,在社会上糊混。见到软弱好欺的学生,不是找茬就是要钱,或许这样他们能体会到一种成就感吧!
(adsbygoogle = window.adsbygoogle || []).push({});
站在学校走廊里好一会,谢文东弯腰拣起掉这地上的书包,走出学校。回家的路上,谢文东眼睛里都是委屈的泪水,心里不停问自己:为什么?为什么他们总是欺负我?为什么他们不欺负别人?为什么会是我?
没有人能给他答案,傍晚的黑暗掩盖了他的泪水。谢文东回到家里,进门前把脸上的泪水擦干净,他不想让家里人知道自己在学校受人欺负。软弱的人不代表他们就没有自尊心,甚至他们的自尊心别任何人都强。谢文东用钥匙打开门,家里只有他的妈妈在。做好的饭菜摆在桌子上等他放学回来吃饭。见他回来后,谢妈妈说:“快点吃饭吧,一会都凉了。”
谢文东点点头问:“我爸呢?”
“你爸今天晚上夜班,不回家了”谢文东的妈妈边拿饭边说。谢文东‘哦’了一声,坐下来看着桌子上的饭菜,没有一点食欲。
见谢文东光坐着不吃饭,他妈妈担心问:“文东,怎么了?是不是生病了?”
“没有!”为了不引起妈妈的怀疑,谢文东拿起饭碗默默吃起来。
谢文东生活在一个普通家庭。爸爸在铁路上班,开机车的,经常夜班。妈妈是下岗工人,后来在外面做点小买卖。家里虽说不上富裕,但是他也从来没有却过钱花。由于他学习成绩好,父母也都很欣慰,只要他伸手要钱,父母从没有拒绝过。
第二天,谢文东还是和往常一样,五点半起床。看会儿昨天的功课后,吃点东西,向妈妈要了十元钱上学去了。他家离学校不远,只隔两条街道,快走不到五分钟就能到。谢文东来到自己班的教室,教室锁着门没有一个人。谢文东用班级钥匙打开门走进去。
他坐在班级的第一排,不是因为他个子不高,而是由于学习好。在J市很多学校都是这样,学习好的坐前面,成绩差的坐后面。班级座位 按每回大考(期中考和期末考)来定。学校对这种方法有它自己的解释:成绩差的都是上课时爱说话的或不好好听课的,让他们坐在后面可以不影响别人,给认真听课升学有希望的同学一个更好的环境。
谢文东坐在座位上看书。过一阵同学陆陆续续来到班级,寂静的教室也慢慢热闹起来。关系不错的同学纷纷凑在一起,有聊昨天晚上看的电视剧如何如何好的,有说最近哪个明星出新歌的,有的几个小女生在一起拿出珍藏的贴纸互相换的。教师里象农贸市场一样热闹。
吵闹的声音越来越大,谢文东皱了皱眉,把手里的书放下。这时昨天抢他钱的胖子进到教室,把书包放在自己的座位上。看见坐在那发呆的谢文东,嘻嘻哈哈走过去。来到近前,一扒拉谢文东的脑袋,“嘿!今天带钱了没有啊?”谢文东被吓了

首先我们需要导入pyquery库 from pyquery import PyQuery,然后获取该网页,doc = pq(response.text)
title=doc(’#page > div.content.book-body > div > h1’).text()
content= content=doc(’#page > div.content.book-body > div > div.neirong’).text()
这里面用doc将网页代码赋值给doc,方便于查找网页内容,然后就是我们要爬取的网页内容了,直接复制节点的selector,就可以输出网页内容了。
下面就是一个用css select pyquery爬取的一个小说的全部内容,并将它保存到了本地文件中。

import requests
from pyquery import PyQuery as pq
response=requests.get("http://www.51shucheng.net/wangluo/huaidanshizenmelianchengde")
response.encoding=response.apparent_encoding
doc=pq(response.text)
links=doc('#page > div.content > div.catalog > div.mulu-list a')
for link in links.items():
    print(link.attr.href)
    response=requests.get(link.attr.href)
    response.encoding = response.apparent_encoding
    doc = pq(response.text)
    title=doc('#page > div.content.book-body > div > h1').text()
    content=doc('#page > div.content.book-body > div > div.neirong').text()
    print(title)
    print(content)
    with open(r"C:\Users\MI\Desktop\xiaoshuo\坏蛋是怎样练成的.txt",mode='a+',encoding='utf-8')as f:
        f.write(title)
        f.write(content)
        f.write("\n")

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值