爬取所有的电影名字,类型,时间等信息
1.准备工作
爬取的网页 https://www.ddoutv.com/f/27-1.html
创建项目
win + R 打开cmd输入
scrapy startproject 项目名
然后在pycharm终端输入
scrapy genspider 类名 xxx.com
一个爬虫类就创建好了
2.思路分析
- 我们爬取全站数据首先要将分页的url规律找到
- 因为我们的数据在二级页码,所以需要在一级页面里面拿到所以的二级页码url再进行请求
- 二级页码url拿到后就可以开始写xpath获取需要的数据了*
- 具体注释在代码内 代码如下
• `import scrapy
from move.items import MoveItem
class TestSpider(scrapy.Spider):
name = 'Test'
# allowed_domains = ['xxx.con']
def start_requests(self):
# 有4896页数据所有循环请求
for i in range(1, 4897):
# html分页符用i代替
start_urls = f'https://www.ddoutv.com/f/27-{i}.html'
# 手动请求url
yield scrapy.Request(url=start_urls, callback=self.parse)
def parse(self, response, **kwargs):
# 爬取所有的二级页面的url
all_a = response.xpath('//div[@class="stui-pannel-box"]/div[@class="stui-pannel_bd"]/ul/li')
# 遍历出来
for li in all_a: # type:scrapy.Selector
link = li.xpath('./div/a/@href').extract()[0]
# 将url拼接完整
links = response.urljoin(link)
# 回调
yield scrapy.Request(url=links, callback=self.reques)
def reques(self, response):
# 获取二级页面的数据
all_name = response.xpath('//div[@class="stui-content"]/div[@class="container"]/div[@class="row"]/div/div[2]')
for i in all_name:
name = i.xpath('./h1/text()').extract_first(default=0)
print(name)
types = i.xpath('./p[1]/a[1]/text()').extract_first(default=0)
print(types)
address = i.xpath('./p[1]/a[2]/text()').extract_first(default=0)
print(address)
year = i.xpath('./p[1]/a[3]/text()').extract_first(default=0)
print(year)
actor = i.xpath('./p[2]/text()').extract_first(default=0)
print(actor)
director = i.xpath('./p[3]/text()').extract_first(default=0)
print(director)
update = i.xpath('./p[4]/text()').extract_first(default=0)
print(update)`
3.运行结果图
到此一个简单的scrapy爬取项目就完成啦!