那么,我相信初学的小伙伴现在一定是似懂非懂的。那么下面我们通过一个案例来慢慢进行分析
首先,我们第一步需要做的就是项目分析,我们来看看爬取这个网站我们需要哪些步骤。
需求就是将该网站中所有的美女图片分类下载到本地。
如果我们需要下载上面所表示的所有的图片的话,我们需要如下几个步骤:
# -*- coding: utf-8 -*- |
|
import requests |
|
from lxml import etree |
|
import urllib3 |
|
urllib3.disable_warnings() |
|
def getClassification(num): |
|
""" |
|
获取分类链接 |
|
:return: |
|
""" |
|
url = f"https://www.quanjing.com/tupian/meinv-{num}.html" |
|
html = sendRequest(url, "get") |
|
htmlValus = htmlAnalysis(html.text, '//*[@id="gallery-list"]/li') |
|
for item in htmlValus: |
|
imgUrl = item.xpath('./a/img/@src')[0] |
|
downLoad(imgUrl) |
|
def downLoad(url): |
|
""" |
|
下载图片 |
|
:param url: |
|
:return: |
|
""" |
|
img = sendRequest(url) |
|
imgName = url.split("@")[0].split("/")[-1] |
|
with open("./quanjing/" + imgName, 'wb') as imgValue: |
|
imgValue.write(img.content) |
|
def htmlAnalysis(html, rule): |
|
""" |
|
根据 xpath 获取数据 |
|
:param html: |
|
:param rule: |
|
:return: |
|
""" |
|
htmlValues = etree.HTML(html) |
|
value = htmlValues.xpath(rule) |
|
return value |
|
def sendRequest(url, method="get"): |
|
""" |
|
发送请求 |
|
:param url: |
|
:param method: |
|
:return: |
|
""" |
|
if method.lower() == "get": |
|
html = requests.get(url=url, headers=getHeader(), verify=False) |
|
elif method.lower() == "post": |
|
html = requests.post(url=url, headers=getHeader()) |
|
else: |
|
html = None |
|
return html |
|
def getHeader(): |
|
""" |
|
获取Header |
|
:return: |
|
""" |
|
ua_headers = { |
|
"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36', |
|
"referer": "https://www.quanjing.com/" |
|
} |
|
return ua_headers |
|
def main(): |
|
getClassification(1) |
|
if __name__ == '__main__': |
|
main() |
|
def main(): |
|
for i in range(10): |
|
getClassification(i) |
|
def downLoad(url): |
|
""" |
|
下载图片 |
|
:param url: |
|
:return: |
|
""" |
|
img = sendRequest(url) |
|
imgName = url.split("@")[0].split("/")[-1] |
|
with open("./quanjing/" + imgName, 'wb') as imgValue: |
|
imgValue.write(img.content) |
|
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。
上面的架构图明确的说明了 Scrapy 主要有 5 个部分。
其实除了上述的内容外,Scrapy 还提供一些中间件,例如:下载器中间件(Downloader Middlewares)和爬虫中间件(Spider Middlewares)等。
在命令行模式下使用pip命令即可安装。
标签:Python,爬虫,案列使用,网页,提取信息,Xpath,语言,属性,结果,函数 来源:
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。