兮夜123 发表于 2021-4-7 13:12

爬取豆瓣电影250的问题

    这个里面的时间,主演导演的格式都一样,<br />    </div>,我该如何提取导演和人名obj=re.compile(r'<div class="source">.*? <img style.*?>(?P<name>.*?)</a>.*?<br />(?P<year>)</div>',re.S)
我自己写的这个好像有问题



<div class="source">
      来自:豆瓣电影
    </div>
   
    <div class="post">
      <atarget="_blank">
      <img src="https://img3.doubanio.com/view/photo/s_ratio_poster/public/p511118051.webp"/>
      </a>
    </div>
    <div class="title">
      <atarget="_blank">
      这个杀手不太冷 Léon
      </a>
    </div>
   
      <div class="rating">
          <span class="allstar50"></span>
          <span class="rating_nums">9.4</span>
          <span>(1926943人评价)</span>
      </div>
    <div class="abstract">
      
          导演: 吕克·贝松
            <br />
          主演: 让·雷诺 / 娜塔莉·波特曼 / 加里·奥德曼
            <br />
          类型: 剧情 / 动作 / 犯罪
            <br />
          制片国家/地区: 法国/美国
            <br />
          年份: 1994
    </div>
</div>

fanvalen 发表于 2021-4-7 13:34

<div class="abstract">\s*(导演:.*)?\s*<br />\s*(主演: .*?)\s*<br />\s*(类型: .*?)\s*<br />\s*(制片国家/地区: .*?)\s*<br />\s*(年份: .*?)\s*</div>

雪流星 发表于 2021-4-7 13:40

# 先获取到豆瓣源码
      soup = BeautifulSoup(html, "html.parser")
      item = str(soup.find_all('div', class_="item"))
# 影片内容
findBd = re.compile(r'<p class="">(.*?)</p>', re.S)
# 得到导演 主演 出片国家等信息
      bd = re.findall(findBd, item)
      bd = bd.strip()
      print(bd)
# 第一行电影信息
            firstInfo = str(bd[:bd.find("<")].strip())
            # 导演
            director = firstInfo.replace("/", "")
            director = director.replace("...", "").strip()
            print(director)
# 剩下的信息自己处理

阿伟de大长腿 发表于 2021-4-7 13:42

按照我这个试试吧

移情√似水 发表于 2021-4-7 14:26

学习大佬们的编程思路。

gentlespider 发表于 2021-4-7 16:17

正则的话加上导演,主演,类型作为筛选条件就可以了

兮夜123 发表于 2021-4-7 21:14

阿伟de大长腿 发表于 2021-4-7 13:42
按照我这个试试吧

好的,我后来摸索了一下,发现是这个问题,空格好像也需要。*?

dalaonpa 发表于 2021-4-9 14:39

我就爬取top250的第一页内容,加了cookie但是print(html)之后运行没有返回值   也没有显示错误,这是被反爬吗?
页: [1]
查看完整版本: 爬取豆瓣电影250的问题