如何使用beautiful soup爬取如下网页源码中的电影名称及链接

使用python3 bs4爬取电影天堂的最新电影http://www.dytt8.net/
可是爬出来都是网页数据,很乱,可以使用soup.findAll直接找到链接的标签进行提取<a herf=。。。吗?,我的代码如下:
import urllib.request
from bs4 import BeautifulSoup
html = urllib.request.urlopen('http://www.dytt8.net/')
bsObj = BeautifulSoup(html,'html.parser')
a = bsObj.findAll('div',{'class':'co_content8'})
list1 = []
for i in a:

j = i.findAll('a')
print(type(j))
print('###')
print(list1.append(str(j)))

print('list1 is :',list1)
print(type(list1))
print(len(list1))
for n in list1:

print(n.split(','))

网页部分源码如下:
图片描述

阅读 4k
3 个回答

推荐使用CSS选择或者xpath、pyjquery
传统都用的正则,findall也可以,不过效果不好,

先定位到div下的ul,再用findall提取出ul下每条<a href....>
然后在对每条<a href.....>进行href属性的提取

可以看下这篇文章,讲BeautifulySoup使用的,希望有帮助

试下代码可行不

urls = []
hrefs  = bsObj.find('div',class_="co_area2").ul.findall('a')
for each in hrefs:
    urls.append['协议头'+each['href']]
print(urls)    
    
可以使用soup.findAll直接找到链接的标签进行提取<a herf=。。。吗?
可以使用的 ,简单写个按href里有html提取的
# -*- coding: utf-8 -*-

import urllib.request,re
from bs4 import BeautifulSoup
html = urllib.request.urlopen('http://www.dytt8.net/')
bsObj = BeautifulSoup(html,'html.parser')

bsObj1 = bsObj.find_all('a',href=re.compile('/html'))
for i in bsObj1:
    print (i['href'],i.string)

推荐问题
logo
Microsoft
子站问答
访问
宣传栏