鐘鐘空 2021-04-12 01:05 采纳率: 75%
浏览 64
已采纳

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')]

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

 


 
  • 写回答

2条回答 默认 最新

  • 木三136 2021-04-12 08:58
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思