第一步解析页面
解析界面需要发送请求,此时需要如下模块:
import requests
from bs4 import BeautifulSoup
上述模块即可分析出页面的具体源码
下面具体介绍如何使用此模块:
import requests
from bs4 import BeautifulSoup
url = 'http://www.4399.com/?hao360a'
x = requests.get(url)
x.encoding=x.apparent_encoding
html=x.text
soup = BeautifulSoup(html, 'html.parser')
print(html)
上述代码为爬取4399小游戏的代码
基本示例如下:
上述为部分网页源码,如有兴趣的可以自己再次查询。
第二部提取页面关键字
我们已经分析了页面了,接下来 我们如何选择出我们需要的内容呢?
比如 我们需要如下的信息:
此时 我们爬取指定的数据:
我们发现如下规则:
我们需要的数据的前面的标签如下:
</div>
<ul class="tm_list">
<li><a href="/flash/200372.htm"><span class="new"></span><img lzimg="1" lz_src="http://imga3.5054399.com/upload_pic/2018/9/5/4399_15170150241.jpg" alt="神偷鲍伯5" />神偷鲍伯5</a></li>
ul标签下,class="tm_list"里面。所以 我们写出如下代码:
soup = BeautifulSoup(html, 'html.parser')
for x in soup.find_all("ul", "tm_list"):
print(x)
即遍历 ul class=“tm_list” ul标签下的tm_list类,此时 我们获取了所有的游戏的名字 网站,图标。
下面 我们就需要将此代码分解了,即将游戏名字,链接等分开保存在文件中,我们先分割此代码,将其放在不同的列表中,此时我们分割得出的相关列表如下:
如上,已经将相关的游戏与链接分割开来。
下面展示相关的核心代码:
for x in soup.find_all("ul", "tm_list"):
X=x.text.strip()
Text.append(X)
text=Text[0].split('\n')
res_url = r"(?<=href=\").+?(?=\")|(?<=href=\').+?(?=\')"
link = re.findall(res_url,html, re.I|re.S|re.M)
for c in link:
www.append(c)
获取网址并且获得相关的链接,因为网页的处理不唯一,所以当获取了相关的数据后,根据相关的处理即可获得所需的相关数据,在这里,我获取的是133个热门小游戏的相关链接,
第三部保存数据
下面我用csv文件的处理形式保存数据:
核心代码如下:
with open("E:\\4399热门小游戏相关链接.csv", "w+", newline="", encoding="utf-8_sig") as f:
writer = csv.writer(f)
writer.writerow(['游戏名字', '游戏链接'])
for row in all:
writer.writerow(row)
如上保存在了E:\4399热门小游戏相关链接.csv,E盘中。下面我们打开E盘
获得如下:
此时 我们的爬取就结束了!
但是学海无涯,下面我将学习更多,后面会详解正则表达式,还有今天未爬取的相关知识,会在后面补充!