19929130967 发表于 2019-11-11 23:58

采集天堂电影数据来看看

1
原理:
构建目标URL:
def page_urls():
    baseurl = 'http://www.ygdy8.net/html/gndy/dyzz/list_23_{}.html'
    for i in range(1, 30):
      url = baseurl.format(i)
      parse_url(url)
只需要改变{}里面的内容就可以实现翻页

爬取电影详情URL:
def parse_url(url):
    response = requests.get(url, headers=headers)
    html = etree.HTML(response.text)
    tables = html.xpath('//table[@class="tbspan"]//a/@href')
    for table_url in tables:
      page_urls = baseurl + table_url

2
需要的模块:
import time
import random
import requests
from lxml import etree
import csv

主程序:(有点长,截取部分)
def spider(page_urls):
    data = {}
    response = requests.get(page_urls, headers=headers)
    html = etree.HTML(response.content.decode('gbk'))
    title = html.xpath('//div[@class="title_all"]//font[@color="#07519a"]/text()')
    data['名字'] = title
    try:
      images = html.xpath('//div[@id="Zoom"]//img/@src')
    except:
      print("套路深!")
    try:
      posters = html.xpath('//div[@id="Zoom"]//img/@src')
    except:
      print("套路深!!")
    data['海报'] = posters
    # time.sleep(random.randint(1, 2))
    zoom_ = html.xpath('//div[@id="Zoom"]')
    infos = zoom_.xpath('.//text()')
    for info in infos:
   
      if info.startswith('◎年  代'):
            info1 = info.replace('◎年  代', '').strip()
            data['年代'] = info1
      elif info.startswith('◎产  地'):
            info2 = info.replace('◎产  地', '').strip()
            data['产地'] = info2
      elif info.startswith('◎类  别'):
            info3 = info.replace('◎类  别', '').strip()
            data['类别'] = info3
      elif info.startswith('◎语  言'):
            info4 = info.replace('◎语  言', '').strip()
            data['语言'] = info4
      elif info.startswith('◎上映日期'):
            info5 = info.replace('◎上映日期', '').strip()
            data['上映日期'] = info5
      elif info.startswith('◎豆瓣评分'):
            info6 = info.replace('◎豆瓣评分', '').strip()
            info6 = ''.join(info6.split('/')[:1])
            data['豆瓣评分'] = info6
      elif info.startswith('◎片  长'):
            info7 = info.replace('◎片  长', '').strip()
            data['片长'] = info7
3.
效果图
https://attach.52pojie.cn//forum/201911/11/235642xvad5a5tzj5bycbf.jpg?l

19929130967 发表于 2019-11-12 08:36

奉天游龙-狼叔 发表于 2019-11-12 02:00
这种接口适用自己搭设的视频网站不?

可以,但是很麻烦

奉天游龙-狼叔 发表于 2019-11-12 02:00

yntcxlong 发表于 2019-11-12 08:16

楼主的概念已拿走,感谢楼主大公无私的分享,辛苦了!

fayron 发表于 2019-11-12 08:59

学习了,感谢分享

ededo 发表于 2019-11-12 09:06

参考下学习了,感谢LZ

andyfky 发表于 2019-11-12 14:35

学习了。。。。。

jinking66 发表于 2019-11-12 18:00

有没有软件,小白可以使用的那种?

CDuser 发表于 2019-11-13 09:42

我是小白先学习一下,谢谢

gelanchengbao 发表于 2019-11-13 14:17


学习了。。。。。
页: [1] 2
查看完整版本: 采集天堂电影数据来看看