Scarpy爬取静态网页信息
一、案例说明
用Scarpy爬取湖北经济学院经院要闻新闻的标题、网址,http://news.hbue.edu.cn/jyyw/list.htm。
需注意:动态网页的源代码,被浏览器加工后,可能与源代码不同。
二、Scarpy操作
(1)在电脑开始菜单中,搜索cmd并打开
(2)在cmd中,切换到写scrapy文件的位置。例如我要写到我的e盘python文件夹中。所以先输入e:进入E盘,再输入cd python(cd空格+文件名),进入python文件
(3)建立scrapy工程:scrapy startproject 文件名。若文件名为myscrapy,此操作会让python文件夹中出现一个myscrapy子目录,该目录中有一堆子目录和文件,其中有spider文件。
(4)在cmd中继续进入到新文件的目录中,生成spider程序:scrapy genspider 爬虫文件名 scrapy工程名.io。也可以手动生产爬虫
(5)改写刚刚产生的爬虫文件
(6)运行。在命令行中运行直接scrapy crawl 爬虫文件名。若在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 Director As → Sources root命令,将该目录变成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
不够美观,若有更好方法需改进

浙公网安备 33010602011771号