Python爬虫入门——2. 1 我的第一个爬虫程序

         第一个爬虫程序就写的简单一点,我们用requests库以及BeautifulSoup库来完成我们的第一个程序(我们所用的python版本为  3.x)。我们爬取豆瓣图书(https://book.douban.com/top250?start=25)Top1-25的书名

#导入requests库
import requests
#导入BeautSoup库
from bs4 import BeautifulSoup
#定义请求头,请求头可以使爬虫伪装成浏览器
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'}
#利用requests模块连接网络,它可以打开并读取从网络获取的对象
html = requests.get("https://book.douban.com/top250?start=0",headers=headers)
#BeautifulSoup通过定位HTML标签来格式化和组织复杂的网络信息
soup = BeautifulSoup(html.text,'lxml')
i = 0
#我们需要的是网页里面其中一部分内容,所以我们会利用select来查找我们需要的内容
name_list = soup.select('tr > td > div.pl2 > a')
for name in name_list:
    i+=1
    print(i,name.get_text().strip())

我们来分析一下这个程序:

1.首先导入我们需要用到的库,定义请求头headers。关于headers的获取请查看此博文https://blog.csdn.net/floatdreamed/article/details/79208719

2.利用requests.get连接网络并获取目标网络

3.利用BeautifulSoup格式化网络内容

4.利用select来查找我们需要的内容

这个页面可以在你需要的内容下,右键—>检查。来获得

在图中我们可以看到,书名是在  td >  div.p2 > a 的范围内的。类似于中国 > 江西 > 南昌。可以通过选中   小王子、右键、点击Copy ——>Copy selector 获得,注意的是,我么获得的原始字符串为#content > div > div.article > div > table:nth-child(6) > tbody > tr > td:nth-child(2) > div.pl2 > a  不过tr之前的需要删除,并且 td:nth-child(2)需要变成   td  这是因为 td:nth-child(2)指的是第二个书名,而我们需要的是1-25,所以需要将其去除。

5.我们获得的是一个列表,所以需要用  for   循环将所有书名打印出来, i 记录的是书的序号,其中strip()用来去除字符串两端的空格,否则我们打印出来的内容空格太多。


 

        

猜你喜欢

转载自blog.csdn.net/lpp5406813053/article/details/83898053