爬虫步骤:
1.获取想要爬取网页的源代码。
2.解析这些代码,获取游戏名称及Icon图片下载链接。
3.下载图片,将图片存储到指定文件夹。
举例:
目标网页:https://www.taptap.com/category/e378?page=1
爬取信息:【游戏名称】,【游戏Icon下载链接】.
PS:这里游戏名称主要用来命名每张下载下来的图片名称
第一步:通过requests获得网页的源代码。
Eg1:
import requests
html=request.get(url)
第二步:通过etree把这些代码解析成xpath能够使用的格式,通过xpath爬取【游戏名称】,【游戏Icon下载链接】。
Eg2:
from lxml import etree #导入etree
selector = etree.HTML(html.text)
完成上面操作后我们就可以用xpath进行读取代码了,找到我们想要的内容位置。通过chrome的开发者工具定位信息位置.
{xpath使用方法:
//定位根节点
/往下层寻找
提取文本内容:/text()
提取某个属性的内容:/@XXX}
data = selector.xpath('//div[@class="taptap-app-item"]')
这里采用了先抓大再抓小的步骤,我们先把所有的游戏都抓下来,再在这些游戏里提取我们想要的每个游戏中的信息。
在'div[@class="taptap-app-item"]'中我们在具体定位。
【游戏名称】:
'div[@class="app-item-caption"]/a[@class="item-caption-title flex-text-overflow"]/h4[@class="flex-text"]/text()’
【游戏Icon下载链接】:
'a/img/@data-src'
第三步:下载图片,将图片存储到指定文件夹
Eg3:
from urllib import request
local = 'f:\img\%s.png' % (game_name)#定义图片存储的位置和每个图片的名字
request.urlretrieve(url,local) #下载图片
完整代码
from lxml import etree
from multiprocessing.dummy import Pool as ThreadPool
import requests
from urllib import request
def spider(url):
html = requests.get(url)
selector = etree.HTML(html.text)
data = selector.xpath('//div[@class="taptap-app-item"]')
for each in data:
game_name = each.xpath('div[@class="app-item-caption"]/a[@class="item-caption-title flex-text-overflow"]/h4[@class="flex-text"]/text()')[0]
picture_link = each.xpath('a/img/@data-src')[0]
print('downloading:',picture_link)
local = 'f:\img\%s.png' % (game_name)#定义图片存储的位置和每个图片的名字
request.urlretrieve(picture_link,local) #下载图片
if __name__=="__main__":
Pool = ThreadPool(4)
page = []
for i in range(1,3): #爬取1-2页
newpage = 'https://www.taptap.com/category/e378?page=' + str(i)
page.append(newpage)
results = Pool.map(spider,page)
Pool.close()
网友评论