python系列30:各种爬虫技术总结

1. 使用requests获取网页内容

以巴鲁夫产品为例,可以用get请求获取内容:
https://www.balluff.com.cn/zh-cn/products/BES02YF
对应的网页为:
在这里插入图片描述
使用简单方法进行解析即可

import requests
r = 'BES02YF'
res = requests.get("https://www.balluff.com.cn/zh-cn/products/%s"%r).text
result = res.split("</title>")[0].split("<title>")[1]

2. 添加多进程

使用multiprocessing进行加速,以上面的balluff为例:

from multiprocessing.dummy import Pool as ThreadPool
from tqdm import tqdm
import numpy as np
import os,json,requests,base64,struct
data = pd.read_excel("balluff.xlsx",sheet_name='all')
valuelist = list(data['Type'])
def getf(type_value):
    try:
        res = requests.get("https://www.balluff.com.cn/zh-cn/products/%s"%type_value).text
        return res.split("</title>")[0].split("<title>")[1]
    except:
        return None
results = []
with ThreadPool(100) as p:
    results = list(tqdm(p.imap(getf, valuelist), total=len(valuelist)))

3. 加入header

有一些网站有防爬虫的功能,需要在请求中添加header,例如西门子的网站需要用如下的方法:

def getf(type_value):
    try:
        headers = {"user-agent": "Mizilla/5.0"}
        res = requests.get("""https://mall.industry.siemens.com/mall/zh/CN/Catalog/Product/?mlfb=%s&SiepCountryCode=CN"""%type_value,headers=headers).text.split("""productIdentifier""")[1]
        return res.split("""</span>""")[0].split('>')[-1]
    except:
        return None

4. 使用selenium

以festo为例,会很讨厌的弹出对话框。
在这里插入图片描述

我们使用selenium模拟点击。并且用find_element找到元素:

from selenium import webdriver
import time
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('https://www.festo.com.cn/cn/zh/search/?text=548755')
f1=driver.find_element(By.PARTIAL_LINK_TEXT,'接受')
f1.click()
from tqdm import tqdm
r1 = []
r2 = []
for type_value in tqdm(valuelist):
    try:
        driver.get('https://www.festo.com.cn/cn/zh/search/?text=%s'%type_value)
        time.sleep(1)
        r1.append(driver.find_element(By.CLASS_NAME,'product-code--NjIDg').text)
        try:
            r2.append(driver.find_element(By.CLASS_NAME,'ident-code--qx13c').text)
        except:
            r2.append(driver.find_element(By.CLASS_NAME,'product-order-code--TR15s').text)
    except:
        r1.append(None)
        r2.append(None)

5. 获取真实的requests地址

以keyence为例,查看网页源代码是无法获得产品清单的,需要在chrome的开发者工具中点击Network,选择Fetch/XHR,然后刷新页面,找到Type为fetch的链接:
在这里插入图片描述
链接为/data/api/seriesModels?siteID=21&languageID=zh-CN&groupID=tcm%3A115-347504&typeID=tcm%3A115-347487&seriesID=WS_SR_fu,其中groupID开始的部分,可以从源代码中获得。具体代码为:

import json
from tqdm import tqdm
result = []
for r2i in tqdm(r2):
    result += json.loads(requests.get('https://www.keyence.com.cn/data/api/seriesModels?siteID=21&languageID=zh-CN&'+\
    list(filter(lambda x:'prd-seriesFooter-navLink of-support' in x,requests.get(r2i)\
    .text.split('\n')))[0].split('?')[1].split('&modelId')[0].replace('Id','ID')).text)['models']

如果找到的链接过于难处理(比如post请求带着一堆请求体),那可以直接右键,选择copy->copy curl,然后替换其中的关键字,用命令行执行即可。

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
解锁网络数据的宝藏:Python爬虫工具与教程集合 一、探索网络信息的无限宝藏 在互联网的海洋中,蕴藏着海量的有价值信息。如何合法、高效地获取这些信息?Python爬虫工具与教程为您揭开这一神秘面纱。通过这些资源,您可以轻松地爬取网站信息,提取所需内容,为各种应用场景提供强大的数据支持。 二、资源亮点 工具齐全:提供一系列功能强大的Python爬虫工具,满足您不同场景下的需求。 教程详尽:配套的Python爬虫教程,从基础到进阶,让您逐步掌握爬虫的核心技术。 合法合规:严格遵守法律法规和网站使用协议,确保采集行为合法,尊重网站权益。 实战项目:结合实际案例,让您在实践中掌握Python爬虫的运用,真正做到学以致用。 三、适用人群 无论您是数据分析师、网络开发者还是对Python爬虫感兴趣的爱好者,这些资源都将为您的学习和实践提供有力的支持。 四、使用建议 按需选择工具与教程:根据实际需求选择合适的工具和教程,确保学习与实践的有效性。 遵守法律法规与协议:在使用这些资源进行爬取活动时,务必遵守相关法律法规和网站的使用协议。 持续学习与更新:随着网络技术的不断进步,Python爬虫技术也在不断发展。建议您持续关注相关动态,提升自己的技能水平。 五、安全与责任 尊重网站权益:避免对目标网站的正常运行造成干扰或损害,合理使用资源。 隐私保护:在采集数据时,严格遵守隐私保护法规,不泄露或滥用用户个人信息。 风险防范:了解并应对潜在的网络威胁,采取相应措施降低风险。 感谢您选择我们的Python爬虫工具与教程集合!让我们一起挖掘网络信息的宝藏,为您的工作和研究注入新的活力!请务必遵守法律法规和网站使用协议,共同维护网络数据的合法采集与利用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值