大家好! 这是我又在一次的使用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
框架图
我在创建的名字有点不太好看,请大家见谅!
存储的文件夹是我测试时用来存储照片和文件的大家也可以存到数据库或其他位置因项目而异。
wz.py文件依据是我产生随机headers的一个包详细链接如下:
https://blog.csdn.net/Black_God1/article/details/81660125
from scrapy.cmdline import execute
execute("scrapy crawl pq".split())
导入
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,
}
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,