[Python爬虫]使用Scrapy框架爬取微博

Scrapy框架爬取微博

  • 简介
  • Scrapy框架
  • main.py(启动文件)
  • setting.py(配置文件)
  • pq.py(项目文件)
      • 话题小组模块
        • 模板
      • 图片模块
      • 用户模块
      • 视频模块(未找到视频接口)
      • 文章模块(未做)
  • pipelines.py(存储)
      • pic下载器
  • items.py (调节)
  • 效果
      • 话题 效果图
      • 图片 效果图
      • 用户/找人 效果图
      • 视频 效果图
  • 总结

简介

大家好! 这是我又在一次的使用Scrapy框架进行爬取微博,这里我将微博模块化方便大家使用和理解这里我分成【找人,文章,视频,图片,话题小组】5个模块。

老规矩需要的包如下:

import scrapy
from ..wz import pa (我自己写的随机html头链接如下:https://blog.csdn.net/Black_God1/article/details/81660125)
import re,time
from lxml import etree
from ..items import sql_text
import pandas as pd
import urllib.parse
from datetime import datetime

Scrapy框架

框架图
我在创建的名字有点不太好看,请大家见谅!
存储的文件夹是我测试时用来存储照片和文件的大家也可以存到数据库或其他位置因项目而异。
[Python爬虫]使用Scrapy框架爬取微博_第1张图片
wz.py文件依据是我产生随机headers的一个包详细链接如下:

https://blog.csdn.net/Black_God1/article/details/81660125


main.py(启动文件)

from scrapy.cmdline import execute
execute("scrapy crawl pq".split())

setting.py(配置文件)

导入

from .wz import pa

需要改的参数

ROBOTSTXT_OBEY = False

DEFAULT_REQUEST_HEADERS = {
	"Host": "s.weibo.com",
    'User-Agent':pa(),
}

ITEM_PIPELINES = {
    'cshi_3.pipelines.sql_data': 300,
}

pq.py(项目文件)

import scrapy
from ..wz import pa
import re,time
from lxml import etree
from ..items import sql_text
import pandas as pd
import urllib.parse
from datetime import datetime

class PqSpider(scrapy.Spider):
    name = 'pq'
    allowed_domains = ['s.weibo.com']
    start_urls = ['http://s.weibo.com']

    #主目录
    def parse(self, response):
        panduan = input("爬取微博那个模块(用户:1,文章(未完成):2,视频(未完成):3,图片:4 ,话题:5)数字代替》》:")

        name = input("输入关键词:")
        dz = input("输入文件存放位置:")

        ln = input("是否使用coosk进行爬取(确定:1,NO:回车)")
        if ln == '1' or ln == 1:
            cookie = input("coosk文件位置绝对路径:")
            # 使用cookie
            with open(cookie, 'r', encoding='utf-8') as f:
                Account = f.read()
            f.close()
            header = {
                "Host": "s.weibo.com",
                "User-Agent": pa(),
                "cookie": "{}".format(Account),
            }
        else:
            header = {
                "Host": "s.weibo.com",
                "User-Agent":pa(),
            }

        # 找人(名称,特定人,页数默认全部)
        if panduan == 1 or panduan == '1':
            someone=input("是否爬取指定个人信息(是:1,否:2,默认否)》:")
            url = 'http://s.weibo.com/user?q={}'.format(urllib.parse.quote(str(name)))
            if someone == '1' or someone ==1:
                html = scrapy.Request(url=url, headers=header, callback=self.user,meta={'name': name, 'dz': dz,

你可能感兴趣的:(爬虫,python,微博,爬虫)