网页爬虫抓取百度图片(如何实现搜索关键字?(一)_e操盘_)
优采云 发布时间: 2021-10-29 15:21网页爬虫抓取百度图片(如何实现搜索关键字?(一)_e操盘_)
2、如何搜索关键词?
通过URL,我们可以发现我们只需要在kw=()和括号中输入你要搜索的内容即可。这样,我们就可以用一个 {} 来代替它,后面我们会循环遍历它。
【五、项目实施】
1、创建一个名为BaiduImageSpider的类,定义一个main方法main和一个初始化方法init。导入所需的库。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
pass
def main(self):
pass
if __name__ == '__main__':
inout_word = input("请输入你要查询的信息:")
spider.main()
pass
if __name__ == '__main__':
spider= ImageSpider()
spider.main()
2、准备url地址和请求头来请求数据。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
def __init__(self, tieba_name):
self.tieba_name = tieba_name #输入的名字
self.url = "http://tieba.baidu.com/f?kw={}&ie=utf-8&pn=0"
self.headers = {
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'
}
'''发送请求 获取响应'''
def get_parse_page(self, url, xpath):
html = requests.get(url=url, headers=self.headers).content.decode("utf-8")
parse_html = etree.HTML(html)
r_list = parse_html.xpath(xpath)
return r_list
def main(self):
url = self.url.format(self.tieba_name)
if __name__ == '__main__':
inout_word = input("请输入你要查询的信息:")
key_word = parse.quote(inout_word)
spider = BaiduImageSpider(key_word)
spider.main()
3、xpath 数据分析
3.1、chrome_Xpath 插件安装
1) 这里使用了一个插件。它可以快速检查我们抓取的信息是否正确。具体安装方法如下。
2)百度下载chrome_Xpath_v2.0.2.crx,chrome浏览器输入:chrome://extensions/
3) 将chrome_Xpath_v2.0.2.crx 直接拖到扩展页面;
4) 如果安装失败,弹窗提示“无法从这个网站添加应用程序、扩展和用户脚本”。如果遇到这个问题,解决方法是:打开开发者模式保存crx文件(直接或者修改后缀为rar)解压到一个文件夹,点击开发者模式加载解压后的扩展,选择解压后的文件夹,点击确定,安装成功;
3.2、chrome_Xpath 插件使用
上面的chrome_Xpath插件我们已经安装好了,接下来就要用到了。1) 打开浏览器,按快捷键F12。2) 选择下图所示的元素。
3) 右击,然后选择“复制XPath”,如下图。
3.3、写代码,获取链接函数。
我们已经获得了上面链接函数的Xpath路径,然后定义了一个链接函数get_tlink并继承self来实现多页面抓取。
'''获取链接函数'''
def get_tlink(self, url):
xpath = '//div[@class="threadlist_lz clearfix"]/div/a/@href'
t_list = self.get_parse_page(url, xpath)
# print(len(t_list))
for t in t_list:
t_link = "http://www.tieba.com" + t
'''接下来对帖子地址发送请求 将保存到本地'''
self.write_image(t_link)
4、保存数据
这里定义了一个write_image方法来保存数据,如下图。
'''保存到本地函数'''
def write_image(self, t_link):
xpath = "//div[@class='d_post_content j_d_post_content clearfix']/img[@class='BDE_Image']/@src | //div[@class='video_src_wrapper']/embed/@data-video"
img_list = self.get_parse_page(t_link, xpath)
for img_link in img_list:
html = requests.get(url=img_link, headers=self.headers).content
filename = "百度/"+img_link[-10:]
with open(filename, 'wb') as f:
f.write(html)
print("%s下载成功" % filename)
注:@data-video 为 URL 中的视频,如下图所示。
【六、效果展示】
1、点击运行,如下图(请输入您要查询的信息):
2、以吴京为例输入后回车:
3、将下载的图片保存在名为“百度”的文件夹中,该文件夹需要提前在本地创建。记得提前在当前代码的同级目录下新建一个名为“百度”的文件夹,否则系统找不到文件夹,会报错找不到文件夹“百度”。
4、下图中的MP4为评论区视频。
[七、总结]
1、 不建议抓取太多数据,可能造成服务器负载,简单试一下。
2、本文基于Python网络爬虫,利用爬虫库实现*敏*感*词*评论区爬取。对Python爬取*敏*感*词*的一些难点进行详细讲解并提供有效的解决方案。3、欢迎积极尝试。有时你看到别人实施起来很容易,但自己动手时,总会出现各种问题。不要自卑,勤于理解。深刻的。学习requests库的使用和爬虫程序的编写。4、 通过这个项目,你可以更快的得到你想要的信息。