爬取所有的電影名字,類型,時間等信息
1.准備工作
創建項目
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.運行結果圖