好友
阅读权限10
听众
最后登录1970-1-1
|
Ls雷
发表于 2018-5-18 09:36
本帖最后由 wushaominkk 于 2018-5-18 10:13 编辑
1、首先我们进入http://www.acfun.cn/找个模块进去这里我选择http://www.acfun.cn/v/list134/index.htm
2、首先分析一下这个网站发现点击上一页下一页URL不会变,ajax没差了然后想到ajax传输数据的方式,json,xml。。。然后我们右键检查打开下方network重新请求一次网站
3、在里面找json或者xml的传输数据不负所望,acfun没有进行加密ps:上次搞了一欧美网站现在还没有找到数据js 里面写了一堆加密mmp,坑爹
4、打开http://www.acfun.cn/list/getlist?channelId=107&sort=0&pageSize=20&pageNo=1 这个json数据
5、开始写代码
6、setting:
[Asm] 纯文本查看 复制代码 ROBOTSTXT_OBEY = False
COOKIES_ENABLED = False
DEFAULT_REQUEST_HEADERS = {
"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"Accept-Encoding":"gzip, deflate",
"Accept-Language":"zh,zh-CN;q=0.9,en;q=0.8,zh-HK;q=0.7,zh-TW;q=0.6",
"Cache-Control":"max-age=0",
"Cookie":" uuid=6edda4075f779950c5b82eaae21ff04b; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%221636bb7d3b4a14-0c9ec1c2aceb0b-f373567-1fa400-1636bb7d3b53b%22%7D; Hm_lvt_2af69bc2b378fb58ae04ed2a04257ed1=1526520600; Hm_lpvt_2af69bc2b378fb58ae04ed2a04257ed1=1526521712",
"Host":"www.acfun.cn",
"Proxy-Connection":"keep-alive",
"Upgrade-Insecure-Requests":"1",
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36'
}
ITEM_PIPELINES = {
'Acfun.pipelines.AcfunPipeline': 300,
}
这些东西主要是为了设置一些反扒的东西,浏览器头乱七八糟的这里我就不细说了
---------------
items里面设置我们需要的字段
[Python] 纯文本查看 复制代码 # 作者昵称
names = scrapy.Field()
# 播放主题
titles = scrapy.Field()
# 发布时间
times = scrapy.Field()
# 视频连接
video_link = scrapy.Field()
# 作者空间
homeb = scrapy.Field()
# 播放次数
numbers = scrapy.Field()
-----------------
开始写你的蜘蛛
[Python] 纯文本查看 复制代码 import json
import scrapy
from Acfun.items import AcfunItem
class Acfu2Spider(scrapy.Spider):
name = 'acfu2'
allowed_domains = ['acfun.cn']
offset = 1
url = 'http://www.acfun.cn/list/getlist?channelId=107&sort=0&pageSize=20&pageNo='
start_urls = [url+str(offset)]
def parse(self, response):
# 此处获取返回的文本
json_text = response.text
# 因为我们会去的文本是json数据所以首先我们要转成Python对象就是dict字典
dict_python = json.loads(json_text, encoding='utf-8')
# 然后我们取的数据是data下面的data里面的数据
content = dict_python['data']['data']
for e in content:
item = AcfunItem()
# 获取连接
urls = 'http://www.acfun.cn' + e.get('link')
# 获取番剧主题
ac_title = e.get('title')
# 获取作者昵称
ac_name = e.get('username')
# 获取发布时间
ac_time = e.get('contributeTimeFormat')
# 获取作者的空间连接
ac_home = e.get('userUrl')
# 获取播放次数
ac_nums = e.get('viewCountFormat')
item['names'] = ac_name
item['titles'] = ac_title
item['times'] = ac_time
item['video_link'] = urls
item['homeb'] = ac_home
item['numbers'] = ac_nums
yield item
# 这里设置的翻页,因为这个模块一共774页不能超过,超过就没数据了
if self.offset < 774:
self.offset += 1
url = self.url + str(self.offset)
# 回掉把url返回给parse函数重新请求
yield scrapy.Request(url,callback=self.parse)
-------------------
完事了,我们看一下成品
{"names": "穆斯塔法", "titles": "【多素材/燃】直到最后", "times": "2018-05-17 09:34:07", "video_link": "http://www.acfun.cn/v/ac4359240", "homeb": "http://www.acfun.cn/u/265938.aspx", "numbers": 433}
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|