1、安装scrapy

  pip3 install scrapy

2、打开terminal,cd 到想要创建程序的目录下

3、创建一个scrapy项目

  在终端输入:scrapy startproject my_first_scrapy(项目名)

4、在终端输入:cd my_first_scrapy  进入到项目目录下

5、新建爬虫:

  输入: scrapy genspider chouti chouti.com  (chouti: 爬虫名称, chouti.com : 要爬取的网站的起始网址)

6、在pycharm中打开my_first_scrapy,就可以看到刚才创建的项目:

利用scrapy获取抽屉新热榜的标题和内容以及新闻地址保存到本地

7、打开settings.py可以对项目相关参数进行设置,如设置userAgent:

利用scrapy获取抽屉新热榜的标题和内容以及新闻地址保存到本地

8、打开chouti.py编写代码:

# -*- coding: utf-8 -*-
"""
获取抽屉新热榜的标题和内容以及新闻地址保存到本地
"""
import scrapy
from scrapy.http import Request
from scrapy.http.response.html import HtmlResponse
from ..items import MyFirstScrapyItem


class ChoutiSpider(scrapy.Spider):
    name = 'chouti'
    allowed_domains = ['chouti.com']
    start_urls = ['http://chouti.com/']

    def parse(self, response):
        # print(response, type(response))  # <class 'scrapy.http.response.html.HtmlResponse'>
        # print(response.text)
        
        # 解析文本内容, 提取标题和简介,地址

        # 去页面中找id=content-list的div标签,再去这个div下找class=item的div
        items = response.xpath("//div[@id='content-list']/div[@class='item']")
        # "//"表示从html文件的根部开始找。"/"表示从儿子里面找。".//"表示相对的,及当前目录下的儿子里面找
        for item in items:
            # 当前目录下找class=part1的div标签,再找div标签下的a标签的文本信息text(),并且只取第一个
            # a标签后面可以加索引,表示取第几个a标签,如第一个:a[0]
            title = item.xpath(".//div[@class='part1']/a/text()").extract_first().strip()  # 去掉标题两端的空格
            href = item.xpath(".//div[@class='part1']/a/@href").extract_first().strip()  # 取href属性
            summary = item.xpath(".//div[@class='area-summary']/span/text()").extract_first()
            # print(1, title)
            # print(2, href)
            # print(3, summary)
            item_obj = MyFirstScrapyItem(title=title, href=href, summary=summary)  # 实例化
            yield item_obj  # 将数据交给pipelines

        # 获取页码
        page_list = response.xpath("//div[@id='dig_lcpage']//a/@href").extract()
        for url in page_list:
            url = "https://dig.chouti.com%s" % url
            yield Request(url=url, callback=self.parse)  # 下载页面内容
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-18
  • 2022-02-12
  • 2022-12-23
  • 2021-06-10
  • 2021-12-08
猜你喜欢
  • 2022-02-07
  • 2022-02-04
  • 2021-06-20
  • 2021-11-05
  • 2021-12-10
  • 2021-10-11
  • 2021-06-07
相关资源
相似解决方案