使用scrapy开发自动爬虫,爬取相关豆瓣电影信息或美说网站指定栏目的所有文章内容

首先先科普一下xpath:

xpath是XML路径语言,它可以用来确定xml文档中的元素位置,通过元素路径来完成对元素的查找。HTML就是XML的一种实现方式,所以xpath是一种非常强大的定位方式。

xpth基本介绍:

XPath(XML Path Language)是一种XML的查询语言,他能在XML树状结构中寻找节点。XPath 用于在 XML 文档中通过元素和属性进行导航

xml是一种标记语法的文本格式,xpath可以方便的定位xml中的元素和其中的属性值。lxml是python中的一个第三方模块,它包含了将html文本转成xml对象,和对对象执行xpath的功能。

Xpath中的绝对路径与相对路径:

Xpath 中的绝对路径从 HTML 根节点开始算,相对路径从任意节点开始。通过开发者工具,我们可以拷贝到 Xpath 的绝对路径和相对路径的代码。

下面进入今天的这个实验:使用scrapy开发自动爬虫豆瓣电影。

首先爬虫第一步导入库:

import requests
from lxml import etree
import csv
import time
然后获取url并返回response值:
参数1:想要获取的url 参数2:爬取的页数
def get_url(m_url, m_page_cnt):
    headers = {
        # UA伪装
        "User-Agent": "xxx",
    }
    m_resp = requests.get(url=m_url, headers=headers)
    return m_resp
将文件保存成.csv形式,并返回文件描述符m_f:
参数1:文件路径 参数2:读写类型 参数3:编码格式 参数4:将单次提取的数据放入暂存列表
def save_csv(m_csv_file, m_rw, m_encoding, m_save_list):
    with open(m_csv_file, m_rw, encoding=m_encoding) as m_f:
        writer = csv.writer(m_f)
        writer.writerows(m_save_list)
        return m_f
然后对网页数据进行解析:

有兴趣的同学可以自己试试,这部分就不放完整代码了,可以自己去爬取一下。需要完整代码加Q3041893695可以获得哦!

 mv_name = tree.xpath(f'//*[@id="content"]/div/div[1]/ol/li[{i}]/div/div[2]/div/a/span[1]/text()')
        mv_kind = tree.xpath(f'//*[@id="content"]/div/div[1]/ol/li[{i}]/div/div[2]/div[2]/p[1]/text()[2]')
        mv_people = tree.xpath(f'//*[@id="content"]/div/div[1]/ol/li[{i}]/div/div[2]/div[2]/div/span[4]/text()')
开始编写主函数:
 for page_cnt in range(0, 226, 25):
        url = f"https://movie.douban.com/top250?start={page_cnt}&filter="
        resp = get_url(m_url=url, m_page_cnt=page_cnt)

        tree = etree.HTML(resp.text)

        save_info_list = []
        deal_events()
参数2以追加的形式存储,防止爬取数据被覆盖:
f = save_csv("./movie_info_demo.csv", 'a', 'utf-8', save_info_list)
resp.close()
        print(f'第{page_cnt}页信息提取成功')
        time.sleep(2)

即可爬取完成

网络爬虫需要有丰富的python知识,要多了解技术文档。

有需完整代码即可三连之后私聊博主或者加Q联系。

祝同学们学习进步,技术能力越来越强!

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值