好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 evanqqqq 于 2019-3-26 18:58 编辑
因为楼主比较喜欢看贴吧, 经常发现好玩的图片, 就用python写了一个爬虫来爬取图片. 可以自定义贴吧名和爬取的页数. 希望大佬们给些指点:$qqq
不同的贴吧需要的解析式可能会不同, 代码里30行和31行的解析式不确定, 如果30行的解析式不行, 改成31行的就可以了. ----------------wkj1688在吗
[Python] 纯文本查看 复制代码 import requests
from lxml import etree
import time
class Baiduspider(object):
def __init__(self):
self.baseurl = 'https://tieba.baidu.com/'
self.url = 'https://tieba.baidu.com/f?'
self.headers = {'User-Agent':'Mozilla/5.0'}
#获取帖子链接
def getPageUrl(self,url):
res = requests.get(url,headers=self.headers)
res.encoding= 'utf-8'
html = res.text
parseHtml = etree.HTML(html)
# 2. 解析对象调用xpath
r1 = parseHtml.xpath('//div[@class="t_con cleafix"]/div/div/div/a/@href')
for t in r1:
self.getImaUrl(t)
#获取帖子中图片的连接
def getImaUrl(self,t):
res = requests.get(self.baseurl+t,headers=self.headers)
res.encoding= 'utf-8'
html = res.text
parseHtml = etree.HTML(html)
# 2. 解析对象调用xpath. 两个解析式不确定, 第一个不能用就换第二个
r2 = parseHtml.xpath('//div[@class="d_post_content j_d_post_content clearfix"]/img[@class="BDE_Image"]/@src')
#r2 = parseHtml.xpath('//div[@class="d_post_content j_d_post_content "]/img[@class="BDE_Image"]/@src')
for i in r2:
self.saveImage(i)
#保存图片到本地
def saveImage(self,i):
print(i)
res = requests.get(i,headers=self.headers)
html = res.content
# 这里自定义图片保存路径, 我是在d盘创建了一个image文件夹用来保存, 图片名就用time.time来定义了
with open('D:\image\%s.jpg'% time.time(),'wb') as f:
f.write(html)
def workOn(self):
key = input('请输入要爬取的贴吧名:')
pn = int(input('请输入要爬取的页数:'))
for x in range(1,pn+1):
url = self.url + 'kw=' + key +'&pn=' + str((x-1)*50)
print('================')
print(url)
self.getPageUrl(url)
if __name__=='__main__':
spider = Baiduspider()
spider.workOn()
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|