Python7个爬虫小案例详解(附源码)中篇

yizhihongxing

Python7个爬虫小案例详解中篇攻略

简介

本文介绍了《Python7个爬虫小案例详解》的中篇,涉及到的7个爬虫小案例分别是:爬取糗事百科段子、爬取妹子图、爬取当当图书、爬取百度百科、爬取链家租房信息、爬取香港天文台天气预报和爬取斗鱼直播。本文将对这些案例进行详细讲解,并附上源码供参考。

篇章内容

  1. 爬取糗事百科段子

本案例涉及到的技术点主要有:requests库、xpath、正则表达式。通过requests库获取糗事百科网页内容,然后利用xpath解析出需要的内容,再通过正则表达式对结果进行进一步处理,最后将结果输出保存。

示例代码:

```python
import requests
from lxml import etree

headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}

response = requests.get('https://www.qiushibaike.com/text/', headers=headers)
html = response.content.decode('utf-8')
selector = etree.HTML(html)

content_list = selector.xpath('//div[@class="article block untagged mb15 typs_hot"]')

for content in content_list:
text = content.xpath('./div[@class="content"]/span/text()')[0]
text = text.strip()
print(text)
```

  1. 爬取妹子图

本案例涉及到的技术点主要有:requests库、xpath、正则表达式、多线程。通过requests库获取妹子图网页内容,然后利用xpath解析出需要的内容,再通过正则表达式对结果进行进一步处理,最后将结果输出保存。由于获取妹子图需要爬取大量图片,为了提高爬取效率,本案例使用了多线程技术。

示例代码:

```python
import requests
from lxml import etree
import re
import os
from queue import Queue
from threading import Thread

class Producer(Thread):
def init(self, url_queue, img_queue, headers):
super().init()
self.url_queue = url_queue
self.img_queue = img_queue
self.headers = headers

   def run(self):
       while True:
           if self.url_queue.empty():
               break
           url = self.url_queue.get()
           response = requests.get(url, headers=self.headers)
           html = response.content.decode('utf-8')
           selector = etree.HTML(html)
           img_list = selector.xpath('//div[@class="pic"]/a/img/@src')
           self.img_queue.put(img_list)

class Consumer(Thread):
def init(self, url_queue, img_queue, headers, path):
super().init()
self.url_queue = url_queue
self.img_queue = img_queue
self.headers = headers
self.path = path

   def run(self):
       while True:
           if self.img_queue.empty() and self.url_queue.empty():
               break
           img_list = self.img_queue.get()
           for img_url in img_list:
               response = requests.get(img_url, headers=self.headers)
               img_name = re.findall(r'/(\w+\.jpg$)', img_url)[0]
               img_path = os.path.join(self.path, img_name)
               with open(img_path, 'wb') as f:
                   f.write(response.content)

headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}

url_queue = Queue()
for i in range(1, 10):
url = 'http://www.meizitu.com/a/list_1_{}.html'.format(i)
url_queue.put(url)

img_queue = Queue()

path = './images'
if not os.path.exists(path):
os.mkdir(path)

producers = [Producer(url_queue, img_queue, headers) for i in range(10)]
consumers = [Consumer(url_queue, img_queue, headers, path) for i in range(10)]

for p in producers:
p.start()

for c in consumers:
c.start()

for p in producers:
p.join()

for c in consumers:
c.join()
```

总结

本文讲解了《Python7个爬虫小案例详解》中篇的完整攻略,包括了爬取糗事百科段子和爬取妹子图的示例说明。在实际使用时,需要根据自己的需求进行修改和优化,但是本文提供的示例可以作为一个基础框架供参考。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python7个爬虫小案例详解(附源码)中篇 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • python基础之并发编程(三)

    Python基础之并发编程(三) 在并发编程的第三篇文章中,我们将会详细地介绍Python中的协程以及asyncio模块,其中包括了Python语言级别的协程实现,以及标准库中的异步IO库asyncio的使用方法。 Python语言级别的协程 协程是一种轻量级的线程,它可以自己保存自己的执行状态,从而实现异步/并发操作。在Python语言中,通过async和…

    python 2023年5月18日
    00
  • Python实现字符串匹配的KMP算法

    Python实现字符串匹配的KMP算法 什么是KMP算法 KMP算法是一种字符串匹配算法,其核心思想是利用已知信息尽量减少匹配的时间。通常来说,我们在匹配字符串时,常用的方法是从头开始,逐个字符进行比较,直到匹配成功或者匹配失败为止。但是这种方法的效率并不高,尤其是在长串匹配的情况下,就会出现时间复杂度很高的问题。KMP算法通过建立一个next数组,存储在匹…

    python 2023年6月5日
    00
  • PyCharm 常用快捷键和设置方法

    PyCharm 常用快捷键和设置方法攻略 1. 快捷键 PyCharm 是一款强大的 Python 集成开发环境,以下是一些常用的 PyCharm 快捷键: Ctrl + Shift + A:查找并执行操作 Ctrl + Alt + L:格式化代码 Ctrl + Alt + T:环绕选中代码块 Ctrl + Alt + O:优化导入 Ctrl + Q:查看函…

    python 2023年5月18日
    00
  • python基础教程之csv文件的写入与读取

    Python基础教程之CSV文件的写入与读取攻略 什么是CSV文件? CSV文件是纯文本文件,它的文件后缀为.csv,全称是Comma Separated Values,即逗号分隔的值。它与Excel、数据库等软件是兼容的,因此在数据分析、数据转换等方面被广泛应用。 CSV文件读取 在Python中读取CSV文件,我们可以使用csv模块提供的一系列方法。cs…

    python 2023年6月3日
    00
  • Python tkinter 多选按钮控件 Checkbutton方法

    Python tkinter多选按钮控件Checkbutton方法用于创建多个选项供用户选择,用户可以同时选择多个选项。Checkbutton控件类似于单选按钮,不同之处在于用户可以选择多个选项。以下是详细的攻略: 创建Checkbutton控件 要创建Checkbutton控件,需要使用tkinter库,代码如下: from tkinter import …

    python 2023年6月13日
    00
  • 以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法

    以下是详细讲解“以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法”的攻略。 简介 Pyspider是一个基于Python的web爬虫框架,可以用来进行数据抓取、数据处理和数据存储。本篇攻略将介绍Pyspider的基本使用方法,以及如何利用Pyspider实现搜索引擎的网络爬虫。 安装 使用Pyspider之前,需要先安装Pyspider及其…

    python 2023年5月14日
    00
  • 使用C++扩展Python的功能详解

    使用C++扩展Python的功能,通常使用C++编写Python扩展模块,以便利用C++的高效性能、高速度和强大功能,提升Python的执行效率和扩展性。下面是使用C++扩展Python功能的完整攻略。 1. 安装相关工具和库 使用C++扩展Python,需要安装相关的工具和库。 首先,需要安装Python的开发环境,可以在官网下载对应系统的Python安装…

    python 2023年5月14日
    00
  • 爬虫:Selenium + PhantomJS

    更:Selenium特征过多(language/UserAgent/navigator/en-US/plugins),以Selenium打开的浏览器处于自测模式,很容易被检测出来,解决方法可选: 用mitmproxy拦截请求,在请求间修改框架特征。 手动修改自动化框架特征。 不改特征的话,用pyppeteer修改js代码中特征检测逻辑。 用其它webdriv…

    爬虫 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部