爬虫案例——网易新闻数据的爬取

案例需求:

1.爬取该新闻网站——(网易新闻)的数据,包括标题和链接

2.爬取所有数据(翻页参数)

3.利用jsonpath解析数据

分析:

该网站属于异步加载网站——直接网页中拿不到,需要借助fidder抓包工具拿取

可以看到第一页请求网址

https://news.163.com/special/cm_yaowen20200213/?callback=data_callback

6a92f0e00544494d8c21cf6b292dd5b6.png

第二页请求网址

https://news.163.com/special/cm_yaowen20200213_02/?callback=data_callback

4dc35985765e4390b31a2f426e9401c3.png

第五页(最后一页)请求网址:

https://news.163.com/special/cm_yaowen20200213_05/?callback=data_callback

2b51c098461745cd9e30bd5993d62358.png

所以翻页代码如下:

首页地址为第一页地址

for i in range(2,6):
    print('==========', '当前是第{}页'.format(i))
    page_url = 'https://news.163.com/special/cm_yaowen20200213_0{}/?callback=data_callback'.format(i)

利用josnpath解析数据

cd754152e4124f5d8cae70ca625e3d5b.png

因为该网页不是常规的josn源码数据,所以需要进行一些处理

text_data=data.split('data_callback(')[1]
# print(text_data)
text_data1 = text_data.split(')')[0]
# print(text_data1)
json_data = json.loads(text_data1)
title = jsonpath(json_data,'$..title')
url = jsonpath(json_data,'$..docurl')

处理解析数据

for i,j in zip(title,url):
    print(i)
    print(j)
    print('=======================================')

示例代码:

import requests
from jsonpath import jsonpath
import json
def get_data(url):
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'
    }
    r = requests.get(url,headers=headers)
    # print(r.text)
    return r.text
    # print(r.text)
    # print(r.json())
def parse_data(data):
    text_data=data.split('data_callback(')[1]
    # print(text_data)
    text_data1 = text_data.split(')')[0]
    # print(text_data1)
    json_data = json.loads(text_data1)
    title = jsonpath(json_data,'$..title')
    url = jsonpath(json_data,'$..docurl')
    for i,j in zip(title,url):
        print(i)
        print(j)
        print('=======================================')
    # print(title)
    # print(url)
if __name__ == '__main__':
    url = "https://news.163.com/special/cm_yaowen20200213/?callback=data_callback "
    # h = get_data()
    # parse_data(h)
    for i in range(2,6):
        print('==========', '当前是第{}页'.format(i))
        page_url = 'https://news.163.com/special/cm_yaowen20200213_0{}/?callback=data_callback'.format(i)
        h = get_data(page_url)
        parse_data(h)

6fe1a5bc51994e42a2d68a1c2185b90f.png

 

好的,下面我来为你介绍一下如何使用Scrapy爬取豆瓣TOP250电影信息。 1. 安装Scrapy 首先,你需要安装Scrapy。如果你已经安装了Python,可以在命令行中使用以下命令安装Scrapy: ``` pip install Scrapy ``` 2. 创建Scrapy项目 接下来,我们需要创建一个Scrapy项目。在命令行中输入以下命令: ``` scrapy startproject douban_top250 ``` 这将会在当前目录下创建一个名为“douban_top250”的文件夹,其中包含了Scrapy项目的基本结构。 3. 编写爬虫代码 在“douban_top250/spiders”目录下创建一个名为“douban.py”的文件,并输入以下代码: ```python import scrapy class DoubanSpider(scrapy.Spider): name = 'douban' allowed_domains = ['movie.douban.com'] start_urls = ['https://movie.douban.com/top250'] def parse(self, response): for movie in response.xpath('//div[@class="hd"]'): yield { 'title': movie.xpath('.//span[@class="title"]/text()').extract_first(), 'rating': movie.xpath('../div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()').extract_first(), 'link': movie.xpath('.//a/@href').extract_first(), } next_page = response.xpath('//span[@class="next"]/a/@href') if next_page: yield response.follow(next_page[0], self.parse) ``` 这段代码定义了一个名为“DoubanSpider”的类,用于爬取豆瓣电影TOP250的电影名称、评分和链接。在这个类中,我们使用了XPath选择器来定位页面中的元素。 4. 运行爬虫 在命令行中进入“douban_top250”文件夹,并输入以下命令来运行爬虫: ``` scrapy crawl douban -o douban_top250.csv ``` 这将会运行刚才编写的“DoubanSpider”爬虫,并将结果保存在名为“douban_top250.csv”的文件中。 至此,你已经学会了如何使用Scrapy来爬取豆瓣TOP250电影信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值