python DrissionPage 拼多多爬取

打开网页版拼多多

设置本地谷歌路径

path = r'C:\Users\PC\AppData\Local\Google\Chrome\Application\chrome.exe'  # 请改为你电脑内Chrome可执行文件路径
ChromiumOptions().set_browser_path(path).save()

判断是否出现验证

while True:
     if page.eles('xpath://p[text()="点击下方“安全验证”按钮,完成拼多多官方验证"]|//div[text()="拼多多安全验证"]'):
         print('出现验证,请通过验证---')
         page.wait(2)
      else:
         break

完整代码如下

import time

from DrissionPage import WebPage ,ChromiumOptions
from DataRecorder import Recorder

path = r'C:\Users\PC\AppData\Local\Google\Chrome\Application\chrome.exe'  # 请改为你电脑内Chrome可执行文件路径
ChromiumOptions().set_browser_path(path).save()
url = 'https://mobile.yangkeduo.com/search_result.html?search_key=iphone15'
bookName = '拼多多_'+time.strftime("%m-%d-%H-%M", time.localtime()) + ".xlsx"
r = Recorder(bookName)
r.add_data(('url','标题','店铺名'))

def main():

    co = ChromiumOptions().use_system_user_path()

    page = WebPage(driver_or_options=co)
    page.timeout = 1
    page.set.retry_times(5) #连接失败时重连次数
    page.set.retry_interval(3) #连接失败时重连间隔
    page.set.NoneElement_value('')

    page.get(url, show_errmsg=True)
    for item in range(1, 800):
        print(item)
        if page.eles(f'xpath://div[@class="_3glhOBhU"][{item}]//*[contains(text(),"试试搜这些")]'):
            continue
        page.ele(f'xpath://div[@class="_3glhOBhU"][{item}]').click()
        page.wait(2.5)
        while True:
            if page.eles('xpath://p[text()="点击下方“安全验证”按钮,完成拼多多官方验证"]|//div[text()="拼多多安全验证"]'):
                print('出现验证,请通过验证---')
                page.wait(2)
            else:
                break
        info_url = page.url
        title = page.ele('xpath://span[contains(@class,"enable-select")]').text
        shop = page.ele('xpath://div[@style="margin-bottom:.02rem"]').text

        print(info_url, title, shop)
        r.add_data((info_url, title, shop))
        page.back()
        page.wait(1)
        page.run_js("window.scrollBy(0,1000)")
        page.wait(2)

        r.record()


if __name__ == '__main__':
    try:
        main()
    except Exception as e:
        print(e)
        r.record()

Python中,使用`DredissonPage`库来爬取淘宝商品评论和图片通常涉及到网络爬虫技术,特别是结合了Redisson(一个分布式内存数据结构服务)和第三方爬虫库,比如Scrapy、BeautifulSoup等。以下是一个简化的步骤概述: 1. **安装必要的库**: 首先需要安装`scrapy`, `redisson-python`以及用于解析HTML的库如`lxml`或`beautifulsoup4`。 ```bash pip install scrapy redisson lxml # 或者 beautifulsoup4 ``` 2. **设置Scrapy项目**: 创建一个新的Scrapy项目,并配置好settings.py文件,启用Redis中间件。 3. **创建Spider**: 在spiders目录下创建一个 Spider 类,如TaoBaoSpider,继承自`CrawlSpider`。在这个类中,你需要定义start_urls列表包含淘宝商品页面的URL,以及解析规则。 4. **处理Redisson**: 使用Redisson连接到Redis服务器,并通过它存储爬取的数据,例如评论和图片链接。可以使用`RList`来暂存评论列表,`RMap`存储图片链接。 ```python from scrapy.spiders import CrawlSpider, Rule from scrapy.linkextractors import LinkExtractor from scrapy_redis.spiders import RedisCrawlSpider import redisson class TaoBaoSpider(CrawlSpider): name = 'taobao' # 爬虫配置... def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.redis_client = redisson.Redisson(host='your_redis_host', port=your_redis_port) def parse(self, response): # 解析评论和图片链接... comment_list = response.css('div.comment') # 假设评论在CSS选择器中找到 for comment in comment_list: yield { 'comment': comment.text, # 如果有图片链接,提取并存储到Redis 'image_url': comment.css('img::attr(src)').get(), } # 将评论数据存储到Redis中 rlist = self.redis_client.lpush('comments', *map(str, [comment['comment'] for comment in comments])) # 获取下一页链接,如果有的话 next_page = response.xpath('//a[@rel="next"]').xpath('@href').get() if next_page: yield response.follow(next_page, callback=self.parse) ``` 5. **运行爬虫**: 完成上述设置后,在命令行中运行Scrapy,开始爬取淘宝商品的评论和图片。 注意:淘宝网站可能会有反爬虫策略,频繁抓取可能触发封禁,所以请确保遵守相关法规和网站政策,并合理设置爬取频率和间隔。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值