使用beautifulsoup做一个简单的网络爬虫

爬取网站:http://www.yc.ifeng.com/?cid=91002

爬取结果

首先我们来看看F12之后,要爬取的标签 table>tbody>tr>td 中的内容。有的还要更深层次的挖掘

首先我们先找到id为booklist的标签。一开始我再犹豫要不要一层一层来找。通过tbody>tr>td>a>...来找。但是最后都没成功(可能是我的技术的问题)。最后上网查了资料发现,其实没必要一层一层来。就直接找你想要的那个标签。例如我想找书名。

首先 main_tag=soup.find_all('div', id='book_list')#查找 id为 book_list 查找最外层

main_tag_list=main_tag[0].find_all('tr') #查找tr层 因为一会要循环。有多少行,就循环多少次

for name_item in it.find_all('td', class_='col-name'):

        for name_i in name_item.find_all('a',class_='bookt'): #查找a标签,且类名是bookt

            name_dict['name'] = name_i['title']#获取title

            name_list.append(name_dict)

 

完整代码:

from  urllib  import  request
from bs4 import BeautifulSoup as bs

resp=request.urlopen('http://www.yc.ifeng.com/?cid=91002')
html_data=resp.read().decode()

soup=bs(html_data, 'html.parser')
main_tag=soup.find_all('div', id='book_list')#查找 id为 book_list

main_tag_list=main_tag[0].find_all('tr')
#main_tag_list=main_tag.tbody.children
type_list=[]#类型列表
name_list=[]#书名列表
author_list=[]#作者列表
book_state_list=[]#图书状态
update_time_list=[]#更新事件

for it in main_tag_list:
    type_dict = {}
    name_dict = {}
    author_dict = {}
    update_time={}
    book_state={}
    for name_item in it.find_all('td',class_='col-time'):#查找td 且类名为col-time
        update_time['update_time']=name_item.text #获得内容
        update_time_list.append(update_time)
    for name_item in it.find_all('td',class_='col-state'):
        book_state['book_state']=name_item.text
        book_state_list.append(book_state)
    for name_item in it.find_all('td',class_='col-type'):
        for type_i in name_item.find_all('a'):
            type_dict['type']=type_i['title'] #获得标签里的内容
            type_list.append(type_dict)
    for name_item in it.find_all('td', class_='col-name'):
        for name_i in name_item.find_all('a',class_='bookt'):
            name_dict['name'] = name_i['title']
            name_list.append(name_dict)
    for name_item in it.find_all('td', class_='col-author'):
        for author_i in name_item.find('a'):
            author_dict['author'] = author_i
            author_list.append(author_dict)

print("---------------------------------------------------------------")
print(len(type_list))
for i in range(len(type_list)):
    print(type_list[i],name_list[i],author_list[i],update_time_list[i],book_state_list[i])
print("---------------------------------------------------------------")

猜你喜欢

转载自blog.csdn.net/qq_41406816/article/details/84711546