re.compile提取网页信息2.0

在爬取豆瓣网页时遇到这种情况,想要爬取片名信息,但是发现不同片名的标签种类不同,给爬取工作造成了一些困难,具体情况如下

不难想电影“这个杀手不太冷的”的片名获取途径可如1.1代码所示,1为其在原网页的代码 

1.
<div class="title">
      <a href="https://movie.douban.com/subject/1295644/" target="_blank">
        这个杀手不太冷 Léon
      </a>

1.1
findTitle = re.compile(r'<div class="title">\n<a href=".*">\n\s*(.*?)\s*</a>')
        for item in soup.find_all('div', class_="bd doulist-subject"):
            item = str(item)
            print(titles)
titles = re.findall(findTitle, item)
print(titles)

而电影“肖申克的救赎”片名获取途径可如2.1代码所示,2为其在原网页的代码

2.
<div class="title">
      <a href="https://movie.douban.com/subject/1292052/" target="_blank">
          <img style="width: 16px; vertical-align: text-top;" src="https://img3.doubanio.com/f/sns/5741f726dfb46d89eb500ed038833582c9c9dcdb/pics/sns/doulist/ic_play_web@2x.png">
        肖申克的救赎 The Shawshank Redemption
      </a>

2.1
findTitle = re.compile(r'<div class="title">\n<a href=".*">\n<img src=".*"/>\s*(.*?)\s*</a>')
for item in soup.find_all('div', class_="bd doulist-subject"):
            item = str(item)
            print(titles)
titles = re.findall(findTitle, item)
print(titles)

 两个源代码的区别就是否有“<img src="https://img3.doubanio.com/f/sns/5741f726dfb46d89eb500ed038833582c9c9dcdb/pics/sns/doulist/ic_play_web@2x.png" style="width: 16px; vertical-align: text-top;"/>”

即爬取时compile对象里是否加“<img src=".*"/>”

这里写成“<img src=".*"/>?”显然是不行的,起不到判断的作用(好像“?”不能作用到Tag上?原来并没有遇到过这种状况)

而且写成“(<img src=".*"/>)?”会运行成:

[('<img src="https://img3.doubanio.com/f/sns/5741f726dfb46d89eb500ed038833582c9c9dcdb/pics/sns/doulist/ic_play_web@2x.png" style="width: 16px; vertical-align: text-top;"/>', '肖申克的救赎 The Shawshank Redemption')]

所以目前是不清楚怎么同时去爬取这两片名,希望有人来帮忙解惑

 

 

 

您可以尝试使用xpath来找到标签,然后通过/text()或//text()来获得您想获得的内容

正则里面问号代表可有可无