1. 程式人生 > >利用scrapy獲取抽屜新熱榜的標題和內容以及新聞地址儲存到本地

利用scrapy獲取抽屜新熱榜的標題和內容以及新聞地址儲存到本地

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,就可以看到剛才建立的專案:

7、開啟settings.py可以對專案相關引數進行設定,如設定userAgent:

8、開啟chouti.py編寫程式碼:

# -*- coding: utf-8 -*-
"""
獲取抽屜新熱榜的標題和內容以及新聞地址儲存到本地
"""
import scrapy
from scrapy.http.response.html import HtmlResponse


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
with open("news.txt", "a+", encoding="utf-8") as f: 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) f.write(title + "\n" + href + "\n" + summary + "\n" + "------------" + "\n")
View Code

9、在終端輸入:

  scrapy crawl chouti(會列印日誌)  或者 scrapy crawl chouti --nolog (不列印日誌) 

  執行爬蟲專案。