scrapy爬虫案例~-~ 进入fishc学习python至今挺久啦,主要学习爬虫今天分享一下
本帖最后由 温木zou 于 2020-12-3 15:06 编辑爬虫文件
import scrapy
from fishc.items import FishcItem
class FcSpider(scrapy.Spider):
name = 'fc'
allowed_domains = ['fishc.com']
start_urls = ['https://fishc.com.cn/forum.php?mod=guide']
def parse(self, response):
selectors = response.xpath('//*[@id="threadlist"]/div/table/tbody')
for i in selectors:
item=FishcItem()
item['name']=i.xpath('./tr/th/a/text()').get()
item['type']=i.xpath('./tr/td/a/text()').get()
item['writer']=i.xpath('./tr/td/cite/a/text()').get()
item['time']=i.xpath('./tr/td/em/span').xpath('string(.)').get().replace('\xa0','')
item['views']=i.xpath('./tr/td/a/text()').get()
yield item
item文件
import scrapy
class FishcItem(scrapy.Item):
name=scrapy.Field()
type=scrapy.Field()
writer=scrapy.Field()
time=scrapy.Field()
views=scrapy.Field()
管道文件1 #这里我是使用pymysql存入数据库的,没有mysql的自己安装哦
没有pymysql的也可以使用下面的一个管道,是存入csv文件的
import pymysql
class FishcPipeline(object):
def __init__(self):
self.db = pymysql.connect(host='localhost', user='root', passwd='123456', db='zhuaba')
self.cursor = self.db.cursor()
self.cursor.execute("delete from fishc")
self.db.commit()
def process_item(self, item, spider):
insert_sql="insert into fishc(name,type,writer,time,views) values(%s,%s,%s,%s,%s)"
data = {
'name' : item['name'],
'type' : item['type'],
'writer' : item['writer'],
'time' : item['time'],
'views' : item['views']
}
# name =pymysql.escape_string(data['name'])
try:
self.cursor.execute(insert_sql,(data['name'],data['type'],data['writer'],data['time'],data['views']))
self.db.commit()
except Exception as e:
print('问题数据跳过!.......', e)
self.db.rollback()
return item
def close_spider(self, spider):
self.cursor.close()
self.db.close()
管道文件2 #存入入csv文件这个要有csv{:10_319:} 没有的也请安装下。
import csv
class FishcPipeline(object):
def __init__(self):
self.file = open('fishc.csv', 'w', newline='')
self.csvwriter = csv.writer(self.file)
self.csvwriter.writerow(['name', 'type', 'writer', 'time','views'])
def process_item(self, item, spider):
self.csvwriter.writerow(, item['type'],
item['writer'], item['time'],item['views']])
return item
def close_spider(self, spider):
self.file.close()
最后提醒一下everbody记得把setting文件里的爬虫协议改成false
并且打开管道
且看结果{:10_278:}
存入数据库
存入csv文件
源码我也放上来了,可以自己下过去瞅瞅。
因为是爬fishc.com的我怕{:10_319:}
兄弟们悠着点,我怕帖子被甲鱼删了
请别瞎搞{:10_262:}
不懂就评论问 {:10_254:}厉害,膜拜大佬 大佬 可以有 感谢分享! 可以可以 感谢 厉害 强 感谢分享! 大佬牛皮!{:10_275:}{:10_257:}
寻思着只要不过分使用问题不大 + 1 大佬
大佬
{:5_109:} 1336069416 发表于 2020-12-4 20:33
+
优秀啊 感觉相当牛逼的样子,膜拜 殃及池鱼 厉害厉害 大佬厉害