搜索
您的当前位置:首页正文

Python爬虫:如何爬取单页数据?

来源:二三娱乐

爬取内容:

思路:

1. 用BeautifulSoup解析网页

变量名 = BeautifulSoup(网页信息,'lxml')

2. 描述要爬取的内容在哪儿

变量名 = 变量名.select()

3. 爬取出我们想要的内容

接下来看具体实现。

from bs4 import BeautifulSoup

import requests

2. 插入好第三方库后,需要描述我们想要爬取的信息在哪儿。

web_data = requests.get(url)

soup = BeautifulSoup(web_data.text,'lxml')

titles = soup.select('h2.stream-list-title > a')

pageviews = soup.select('footer > span.post-views')

imgs = soup.select('div.stream-list-image > a > img')

我们逐行来看下。

第一行:写明我们是从哪个网页中获取信息;

第二行:web_data为变量名,用requests库的get来请求这个网页中的信息;

第三行:soup为变量名,调用BeautifulSoup和lxml库来解析网页,其中web_data.text为我们要获取的网页的文本信息;

第四行:写明变量titles的具体位置,使用select方法来实现,括号内为标题在网页中的位置,位置的获取方法如下:

用Google浏览器打开该页面——鼠标移入标题处,右键选择【检查】——右侧可以看到标题对应的代码,鼠标放置代码处右键【Copy】——选择【Copy selector】。BeautifulSoup支持selector,不支持XPath。

这时可以获得标题的路径,复制出来的路径应该是个比较长的路径,我删去了前面的部分,保留了标题前的2-3层来代表其路径。

第五行pageviews、第六行imgs方法同上。

for title,pageview,img in zip(titles,pageviews,imgs):

data = {

'title':title.get_text(),

'pageview':pageview.get_text(),

'img':img.get('src')

}

print(data)

运行程序后,可以得到我们想要的结果(woshipm首页默认加载的10篇文章数据)。

最后,附完整代码:

from bs4 import BeautifulSoup

import requests

web_data = requests.get(url)

soup = BeautifulSoup(web_data.text,'lxml')

titles = soup.select('h2.stream-list-title > a')

pageviews = soup.select('footer > span.post-views')

imgs = soup.select('div.stream-list-image > a > img')

for title,pageview,img in zip(titles,pageviews,imgs):

data = {

'title':title.get_text(),

'pageview':pageview.get_text(),

'img':img.get('src')

}

print(data)

建议大家可以使用类似的方法去爬取下比如作者信息、收藏量等,或换个网页做新的尝试。Learning by doing。

Top