Rastreador de reprodução Python_Scrapy

  1. Conceito: Scrapy é um pacote de captura de tela e web scrapy rápido e de alto nível

  2. Instalação rápida

     pip3 install scrapy
    
  3. Scrapy é simples e prático - rastreador
    3.1 Crie um projeto Scrapy de teste:

	scrapy startproject project_name 

Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
3.2 Definir as definições de campo a serem capturadas no arquivo items.py

import scrapy
class DemoItem(scrapy.Item):
  #define the fields for you item here like:
  #name = scrapy.Field()
  title = scrapy.Field() #抓取的标题
  link = scrapy.Field() #抓取的链接

3.3 Primeiro pegue o conteúdo da página e dê uma olhada para criar MydemoSpider.py na pasta spiders

import scrapy

class MydemoSpider(scrapy.Spider):
    # name表示爬虫的名字,在`scrapy crawl xx`时使用
    name = “mydemo"
    # allowed_domains定义了爬取的范围,限定在某几个域名内
    allowed_domains = ['http://www.n360.cn']
    # start_urls定义了从哪里开始爬取
    start_urls = ['http://www.n360.cn']

    # parse方法用于接收Downloader返回的结果
    def parse(self,response):
        with open('homepage','wb') as f:
            f.write(response.body)

3.4 Teste simples: Uma homepage será gerada no diretório atual, o conteúdo é o código html da página

cd /Users/xietong/Desktop/mydemo/mydemo
scrapy crawl mydemo 

Insira a descrição da imagem aqui
3.5 entender a sintaxe xpath do scrapy

gramática significado
/ html / head / title Selecione na tag no documento HTML元素
/ html / head / title / text () Selecione o texto do elemento de título mencionado acima
// td Selecionar tudo elemento
// div [@ class = 'mine'] Selecione todos os elementos div com atributo class = 'mine'

3.6 Teste a sintaxe xpath do scrapy

# 终端输入,进入scrapy shell模式
$scrapy shell "http://www.n360.cn"
# response 可以用它查看网页信息
# response.headers 获取网页的请求头

Insira a descrição da imagem aqui

# response.xpath('//title’)  获取页面title 返回的是Selector对象

Insira a descrição da imagem aqui

# response.xpath('//title').extract() extract()方法会将Selector对象转化为列表对象

Insira a descrição da imagem aqui

# response.xpath('//title/text()').extract() title标签的文本内容

Insira a descrição da imagem aqui

# response.xpath("//ul[@class='newslist']").extract() 获取ul元素class属性为newslist

Insira a descrição da imagem aqui

# 获取li标签
sites = response.xpath('//ul[@class="newslist"]/li’)
for site in sites:
	# 获取a标签的text内容
	title = site.xpath('a/text()').extract()
	print(title)

Insira a descrição da imagem aqui
3.7 Modificar o conteúdo de MydemoSpider.py diretamente

import scrapy
from mydemo.items import DemoItem 

class MydemoSpider(scrapy.Spider):
    # name表示爬虫的名字,在`scrapy crawl xx`时使用
    name = "mydemo"
    # allowed_domains定义了爬取的范围,限定在某几个域名内
    allowed_domains = ['http://www.n360.cn']
    # start_urls定义了从哪里开始爬取
    start_urls = ['http://www.n360.cn']

    # parse方法用于接受Downloader返回的结果
    def parse(self,response):
        sites = response.xpath("//ul[@class='newslist']/li")
        items = []
        for site in sites:
            item = DemoItem()
            item['title'] = site.xpath('a/text()').extract()[0]
            item['link'] = self.allowed_domains[0] + site.xpath('a/@href').extract()[0]
            items.append(item)
        return items

3.8 Gere um arquivo json e especifique a codificação para os resultados de teste completos do projeto

# 将parse函数返回的结果进行导出,使用json格式
scrapy crawl demo -o items.json -t json -s FEED_EXPORT_ENCODING=UTF-8

Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/q18729096963/article/details/106080362
Recomendado
Clasificación