温木zou 发表于 2020-12-3 14:58:24

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:}

不懂就评论问

疾风怪盗 发表于 2020-12-3 15:01:39

{:10_254:}厉害,膜拜大佬

咸蛋蛋 发表于 2020-12-3 15:09:41

大佬

jayleom 发表于 2020-12-3 15:15:39

可以有

hornwong 发表于 2020-12-3 15:23:32

感谢分享!

v.ki 发表于 2020-12-3 15:38:29

可以可以

545208057 发表于 2020-12-3 16:55:16

感谢

胡鸣谦 发表于 2020-12-3 17:36:16

厉害

心驰神往 发表于 2020-12-4 07:56:09

奋斗者4 发表于 2020-12-4 08:17:49

感谢分享!

weiter 发表于 2020-12-4 19:37:34

大佬牛皮!{:10_275:}{:10_257:}
寻思着只要不过分使用问题不大

1336069416 发表于 2020-12-4 20:33:07

+

不完美小孩 发表于 2020-12-5 22:00:54

1

李际豪 发表于 2020-12-5 22:52:29

大佬

叼辣条闯世界 发表于 2020-12-6 10:04:03

大佬
{:5_109:}

苏穆大人 发表于 2020-12-7 09:42:11

1336069416 发表于 2020-12-4 20:33
+

优秀啊

mhxy199069 发表于 2020-12-7 21:41:13

感觉相当牛逼的样子,膜拜

兢兢 发表于 2020-12-8 02:57:35

殃及池鱼

XiaoPaiShen 发表于 2020-12-8 07:44:40

厉害厉害

bhcqzf 发表于 2020-12-9 14:09:50

大佬厉害
页: [1] 2 3
查看完整版本: scrapy爬虫案例~-~ 进入fishc学习python至今挺久啦,主要学习爬虫今天分享一下