|  | 
 
| 
代码如下:
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
 import requests,csv,random
 from bs4 import BeautifulSoup
 
 csv_file=open('电影.csv', 'w', newline='',encoding='utf-8-sig')
 writer = csv.writer(csv_file)
 writer.writerow([ '电影名', '导演',  '演员','类型','地区','语言','上映日期','片长'])
 
 header = {
 'Host':'movie.douban.com',
 'Origin':'movie.douban.com',
 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36',
 }
 proxies={"http":'163.204.240.175'}
 
 
 def format_url(num):
 urls=[]
 base_url='https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=%E7%94%B5%E5%BD%B1&start={}'
 for i in range(0,20*num,20):
 url=base_url.format(i)
 urls.append(url)
 return urls
 urls=format_url(500)
 
 
 
 for url in urls:
 html=requests.get(url,headers=header,proxies=proxies,timeout=5)
 soup=BeautifulSoup(html.text,'lxml')
 
 
 到此就不知道该怎么做了
 这个print(soup)之后
 出来的结果是有电影的名称,评分,导演,演员,还有电影的具体豆瓣页面的url,
 但是我想要的是再进入这个url里边,
 去获取到更多的信息,包括 电影的'类型','地区','语言','上映日期','片长'
 然而到这里我就不知道该怎么做了
 
 还有就是,写入csv文件老是失败,写不进去为什么??
 
 希望能有人帮助一下!
 
 
用的etree,供你参考: 复制代码import requests
from lxml import etree
import re
import csv
base_url = 'https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=%E7%94%B5%E5%BD%B1&start='
headers = {'user-agent': 'firefox'}
tt = {}
for item in range(0, 500, 20):
    url = base_url + '{}'.format(item)
    r = requests.get(url, headers=headers)
    data = r.json()
    for x in range(0, 20):
        key = data['data'][x]['title']
        tt[key] = []
        tt[key].append(key)
        tt[key].append(data['data'][x]['directors'][0])
        item = data['data'][x]['url']
        r = requests.get(item, headers=headers)
        html = etree.HTML(r.text)
        info = html.xpath('//div[@id="info"][1]')[0]
        actors = info.xpath('//span[3]/span[2]//a/text()')
        tt[key].append(actors)
        types = info.xpath('//span[@property="v:genre"]/text()')
        tt[key].append(types)
        zones = re.findall('地区:</span>(.*?)<', r.text)
        tt[key].append(zones)
        lang = re.findall('语言:</span>(.*?)<', r.text)
        tt[key].append(lang)
        date = info.xpath('//span[@property="v:initialReleaseDate"]//text()')
        tt[key].append(date)
        leng = info.xpath('//span[@property="v:runtime"]/text()')
        tt[key].append(leng)
with open('moive.csv', 'w') as f:
    writer = csv.writer(f)
    writer.writerow(['电影名', '导演', '演员', '类型', '地区', '语言', '上映日期', '片长'])
    for item in tt.values():
        writer.writerow(item)
 | 
 |