Scarpy rastrea información estática de la página web

Scarpy rastrea información estática de la página web

1. Descripción del caso

Utilice Scarpy para rastrear los titulares y las URL de las noticias del Instituto de Economía de Hubei, http://news.hbue.edu.cn/jyyw/list.htm.

Nota: El código fuente de la página web dinámica puede ser diferente del código fuente después de ser procesado por el navegador.

Dos, operación Scarpy

(1) En el menú de inicio de la computadora, busque cmd y abra

(2) En cmd, cambie a la ubicación donde está escrito el archivo scrapy. Por ejemplo, quiero escribir en la carpeta python de mi disco electrónico. Entonces ingrese e primero: ingrese el disco E, luego ingrese cd python (espacio de cd + nombre de archivo), ingrese el archivo de python

(3) Cree un proyecto scrapy: nombre de archivo scrapy startproject. Si el nombre del archivo es myscrapy, esta operación hará que aparezca un subdirectorio de myscrapy en la carpeta de python Hay un montón de subdirectorios y archivos en el directorio, incluidos los archivos araña.

(4) Continúe ingresando al directorio del nuevo archivo en cmd y genere el programa araña: scrapy genspider scrapy file name scrapy project name.io. También puede producir rastreadores manualmente

(5) Vuelva a escribir el archivo del rastreador que acaba de generar

(6) Operación. Ejecute scrapy crawl directamente en la línea de comandos para rastrear el nombre del archivo del rastreador. Si ejecuta en pycharm, necesita crear un nuevo archivo.

Tres, el código

import scrapy
from bs4 import BeautifulSoup
from newscrapy.items import NewscrapyItem
#从item中引用此类,可以存储为任意格式文件
class SecondSpider(scrapy.Spider):
    name = 'Second'
    start_urls = ['http://news.hbue.edu.cn/jyyw/list.htm']
    def parse(self, response):
        item = NewscrapyItem()
        #必须
        newslist = response.xpath('//*[@id="wp_news_w7"]/ul/li').extract()
        urllist = []
        titlelist = []
        #用于存储信息
        for news in newslist:
            bs = BeautifulSoup(news, 'lxml')
            a = bs.find('a')
            theurl = a.attrs['href']
            if 'http://news.hbue.edu.cn/' not in theurl:
                url = 'http://news.hbue.edu.cn/' + theurl
            else:
                url = theurl
            urllist.append(url)
            title = a.attrs['title']
            titlelist.append(title)
        item['url'] = urllist
        item['title'] = titlelist
        return item

Cuarto, almacenar como un archivo csv

Si edita el archivo SecondSpider en pycharm, debe hacer clic en el directorio newscrapy y hacer clic en el comando Mark Director As → Sources root en el menú emergente del botón derecho para cambiar el directorio al directorio del código fuente de Python (para que Python busque en este directorio para importar el archivo del paquete Python). Después de hacer clic en este comando, el icono del directorio newscrapy se volverá azul para que el programa pueda modificar el archivo item.py.

class NewscrapyItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    url = scrapy.Field()
    title = scrapy.Field()

Luego cree un nuevo archivo py en cualquier lugar del subdirectorio newscrapy (pero es mejor no crearlo en spier).

Por ejemplo, cree un archivo de script llamado executeSecond.py en el directorio donde se encuentra el archivo items.py

1 from scrapy import cmdline
2 cmdline.execute('scrapy crawl Second -o news.csv'.split())

Cinco, efecto

title,url
"学生座谈会召开,【抗疫故事】抗疫事迹——校医院,【人民日报】铭记历史 砥砺奋进——写在中国人民抗日战争暨世界反法西斯战争胜利75周年之际,【湖北日报】图书馆门口排长队 这所高校恢复372门次课堂,疫后重启课堂  师生精神饱满,【抗疫故事】抗疫事迹——亿优物业,党风廉政建设宣传教育月活动启动,学校疫情防控工作指挥部研究部署秋季开学后疫情防控工作,我校学子获中国大学生计算机设计大赛一等奖,经院社区党员干部下沉工作动员大会举行,我校迎来2020年秋季学期返校学生,2020年暑期辅导员培训会举办,秋季开学中层干部会议召开,学校召开校党委中心组扩大学习暨《谈治国理政》第三卷学习宣讲会","http://news.hbue.edu.cn//51/89/c7592a217481/page.htm,http://news.hbue.edu.cn/50/b1/c8154a217265/page.htm,http://news.hbue.edu.cn//51/32/c7592a217394/page.htm,http://news.hbue.edu.cn//51/1c/c7592a217372/page.htm,http://news.hbue.edu.cn//50/bb/c7592a217275/page.htm,http://news.hbue.edu.cn/50/a0/c8154a217248/page.htm,http://news.hbue.edu.cn//50/97/c7592a217239/page.htm,http://news.hbue.edu.cn//50/95/c7592a217237/page.htm,http://news.hbue.edu.cn//50/4b/c7592a217163/page.htm,http://news.hbue.edu.cn//50/48/c7592a217160/page.htm,http://news.hbue.edu.cn//50/26/c7592a217126/page.htm,http://news.hbue.edu.cn//50/03/c7592a217091/page.htm,http://news.hbue.edu.cn//4f/ee/c7592a217070/page.htm,http://news.hbue.edu.cn//4f/e9/c7592a217065/page.htm

Supongo que te gusta

Origin blog.csdn.net/sgsdsdd/article/details/109325080
Recomendado
Clasificación