Scarpyは静的なWebページ情報をクロールします

Scarpyは静的なWebページ情報をクロールします

1.ケースの説明

Scarpyを使用して、湖北経済学院のニュースのヘッドラインとURL(http://news.hbue.edu.cn/jyyw/list.htm)をクロールします。

注:動的Webページのソースコードは、ブラウザで処理された後のソースコードとは異なる場合があります。

2、Scarpy操作

(1)コンピューターのスタートメニューで、cmdを検索して開きます

(2)cmdで、scrapyファイルが書き込まれる場所に切り替えます。たとえば、eディスクのpythonフォルダに書き込みたいと思います。したがって、最初にeを入力します。Eディスクを入力してから、cd python(cdスペース+ファイル名)を入力し、pythonファイルを入力します。

(3)scrapyプロジェクトを作成します:scrapystartprojectファイル名。ファイル名がmyscrapyの場合、この操作により、myscrapyのサブディレクトリがpythonフォルダに表示されます。ディレクトリには、スパイダーファイルを含む多数のサブディレクトリとファイルがあります。

(4)cmdに新しいファイルのディレクトリを入力し続け、スパイダープログラムを生成します:scrapy genspiderScrapyファイル名scrapyプロジェクト名.io。クローラーを手動で作成することもできます

(5)生成したクローラーファイルを書き換えます

(6)操作。コマンドラインで直接scrapycrawlを実行して、クローラーファイル名をクロールします。pycharmで実行する場合は、新しいファイルを作成する必要があります。

三、コード

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

第四に、csvファイルとして保存します

pycharmでSecondSpiderファイルを編集する場合は、newscrapyディレクトリをクリックし、右クリックのポップアップメニューで[Mark DirectorAs]→[Sourcesroot]コマンドをクリックして、ディレクトリをPythonソースコードディレクトリに変更する必要があります(Pythonがこのディレクトリを検索して、Pythonパッケージファイルをインポートします)。このコマンドをクリックすると、newscrapyディレクトリアイコンが青色に変わり、プログラムがitem.pyファイルを変更できるようになります。

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

次に、newscrapyサブディレクトリの任意の場所に新しいpyファイルを作成します(ただし、spierで作成しないことをお勧めします)。

たとえば、items.pyファイルが配置されているディレクトリにexecuteSecond.pyという名前のスクリプトファイルを作成します。

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

五、効果

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

おすすめ

転載: blog.csdn.net/sgsdsdd/article/details/109325080