爬取豆瓣电影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> <div class="abstract">\s*(导演:.*)?\s*<br />\s*(主演: .*?)\s*<br />\s*(类型: .*?)\s*<br />\s*(制片国家/地区: .*?)\s*<br />\s*(年份: .*?)\s*</div> # 先获取到豆瓣源码
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
按照我这个试试吧
好的,我后来摸索了一下,发现是这个问题,空格好像也需要。*? 我就爬取top250的第一页内容,加了cookie但是print(html)之后运行没有返回值 也没有显示错误,这是被反爬吗?
页:
[1]