用xpath方法提取网页内容保存为json格式
⽤xpath⽅法提取⽹页内容保存为json格式⽤Xpath⽅法提取⽹页内容保存为json格式
手机改自己家wifi密码看到这个⽹页,⾸先分析需要爬取的内容:标题、点赞数、图⽚……
打开虚拟环境,在Scrapy shell中调试
提取标题⽂字
按照上述⽅法,对⽂章作者、评论数、点赞数等进⾏提取。
debug⼀下,发现要抓取的内容都可以实现。
下⾯把⽂件配置⼀下,抓取下来并保存为json格式。
items的编写
⽂件中有 items.py ,这个⾥⾯是⽤来封装爬⾍所爬取的字段,如:标题、作者、时间等
import scrapy
class ArticleSpiderItem(scrapy.Item):
title = scrapy.Field()
create_data = scrapy.Field()
author = scrapy.Field()
praise_num = scrapy.Field()
comment_num = scrapy.Field()
content = scrapy.Field()
2023年5月1号放假几天
Spider的编写
Spider是⽤户编写从⽹站爬取数据的类。其中包含了⽤于下载的初始化URL,⽹页中的链接及分析⽹页中的内容,提取⽣成 item的⽅法。
# -*- coding: utf-8 -*-
import re
import scrapy
from ArticleSpider.items import ArticleSpiderItem
class JobboleSpider(scrapy.Spider):
name = "jobbole"
allowed_domains = ["blog.jobbole"]
start_urls = ['top.jobbole/38569/']
def parse(self, response):
article_item = ArticleSpiderItem()
#标题:
title = response.xpath('//div[@class="media-body"]/h1/a/text()').extract_first()
#发布⽇期:
create_data = response.xpath('//div[@class="media-body"]/p/span[1]/text()').extract_first()
#⽂章作者:
author = response.xpath('//div[@class="media-body"]/p/span[3]/a[2]/text()').extract_first()
#点赞数:
praise_num = response.xpath('//div[@class="post-adds"]/span[1]/h10/text()').extract_first()
#评论数:
comment_num = response.xpath('//div[@class="media-body"]/p/span[4]/a/text()').extract_first()
炸茄盒的做法#⽤正则表达式只提取数字。
match_re = re.match(".*?(\d+).*", comment_num)
if match_re:
comment_num = up(1)
#提取正⽂内容
content = response.xpath('//div[@class = "p-entry"]').extract_first()
article_item["title"] = title
article_item["create_data"] = create_data
article_item["author"] = author
article_item["praise_num"] = praise_num
article_item["comment_num"] = comment_num
article_item["content"] = content
yield article_item
pipelines 的设置
对所抓取的内容进⾏ json 格式保存。
今年元旦放假放哪几天
import json
import codecs重阳节祝福语送父母
class JsonWithEncodingPipeline(object):
#⾃定义json⽂件的导出
def__init__(self):
self.file = codecs.open('Article.json', 'w', encoding="utf-8")
def process_item(self, item, spider):
lines = json.dumps(dict(item), ensure_ascii=False) + "\n"
self.file.write(lines)
return item
def spider_closed(self, spider):
self.file.close()
settings 的编写
主要是配置⽂件。
ITEM_PIPELINES = {
'ArticleSpider.pipelines.JsonWithEncodingPipeline': 300,
}
编写 main 函数
在PyCharm中运⾏爬⾍
dline import execute
import sys
import os
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
execute(["scrapy", "crawl", "jobbole"])
兽人之个好男人嫁了吧

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。