ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

scrapy_爬虫

2022-04-03 16:34:33  阅读:167  来源: 互联网

标签:self 爬虫 item scrapy offset div com


命令行下载jar包

pip install xxxxxx -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
使用上面的命令下载wheel、lxml、twisted、pywin32、scrapy五个jar包,xxxxxx内填包名
命令行创建项目
scrapy startproject yc yc是项目名
创建py文件
scrapy genspider baidu www.baidu.com baidu是文件名 文件名后写网址
在项目中的settings.py文件里设置:
ROBOTSTXT_OBEY = False 不遵从机器人协议
DOWNLOAD_DELAY = 3 下载延迟3秒,即下载时间最多不超过3秒
默认请求头
DEFAULT_REQUEST_HEADERS={
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language':'en',
'User-Agent':'Mozilla/5.0(Windows NT 6.2;WOW64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/27.0.1453.94 Safari/537.36'#浏览器的类型,这一行的值要到浏览器里面找。Ctrl+Shift+I打开开发者工具->点击第一行的Network->点击Name下的一个文件名->点击Headers往下滑动即可找到
}
#管道优先级
ITEM_PIPELINES = {
'TXmovies.pipelines.TxmoviesPipeline': 300,
}
run.py文件
from scrapy import cmdline
#执行命令行       为什么要以空格分隔分割成列表来执行
cmdline.execute('scrapy crawl txms'.split())#'scrapy crawl txms'.split()输出成了列表  ['scrapy','crawl','txms']

 

pipelines.py文件
class TxmoviesPipeline(object):
    def process_item(self, item, spider):
        print(item)
        return item

 

txms.py文件
import scrapy
# ..回退一层文件夹
from ..items import TxmoviesItem

class TxmsSpider(scrapy.Spider):
    name = 'txms'
    allowed_domains = ['v.qq.com']
    start_urls = [
        'https://v.qq.com/x/bu/pagesheet/list?append=1&channel=cartoon&iarea=1&listpage=2&offset=0&pagesize=30']
    #位移
    offset = 0

    def parse(self, response):
        #定义数据结构
        items = TxmoviesItem()
        #将页面解析数据放到列表,每个页面有多个这种div,解析完后就有多条,存到列表
        lists = response.xpath('//div[@class="list_item"]')# response.xpath('//div[@class="list_item"]')是列表
        #遍历列表将数据存到数据结构item
        for i in lists:
            #从每个div中提取电影名字
            items['name'] = i.xpath('./a/@title').get()     #xpath查找a链接下的标题信息
            #从每个div中提取电影描述
            items['description'] = i.xpath('./div/div/@title').get()
            #移交控制权给管道
            yield items
        #若位移小于120
        if self.offset < 120:
            #位移修改
            self.offset += 30
            url = 'https://v.qq.com/x/bu/pagesheet/list?append=1&channel=cartoon&iarea=1&listpage=2&offset={}&pagesize=30'.format(
                 str(self.offset)) #   .format(str(self.offset))填充内容到offset={}
            #url = 'https://v.qq.com/x/bu/pagesheet/list?append=1&channel=cartoon&iarea=1&listpage=2&offset={'+str(self.offset)+'}&pagesize=30'
            #回调parse函数
            yield scrapy.Request(url=url, callback=self.parse)#   callback

标签:self,爬虫,item,scrapy,offset,div,com
来源: https://www.cnblogs.com/8888w/p/16096305.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有