c 抓取网页数据(你将看到selenium自动化抓取遇到的问题可借鉴该思路 )

优采云 发布时间: 2022-01-08 09:25

  c 抓取网页数据(你将看到selenium自动化抓取遇到的问题可借鉴该思路

)

  你会看到selenium在携程的自动爬取过程中遇到的问题。可以借鉴这个思路爬取其他网站1.分析网页

  近日,导师下达了爬取携程游轮用户评论数据的任务。对于一个非编程出身的门外汉来说,这项任务并不容易。

  携程网站功能

  示例网址:

  抓取评论时,评论页是ajax异步加载的,尝试动态加载抓取,F12打开评论元素的Network,用移动端抓取,查看preserve log refresh,发现json文件xhr下有需要的资料

  

  尝试构建一个url列表,使用requests得到一个收录评论的json文件,然后再次解析提取信息?但问题来了。在分析 url 模式时发现,对于每个请求,收录所需信息的所有不同 json 文件的 url 都是相同的。

  并且打开url报错,没有请求信息,json文件如下

  ResponseStatus

Timestamp "/Date(1557366295878+0800)/"

Ack "Failure"

Errors

Message "PARAM_ERROR, 请求字符串错误,condition不能为空"

ErrorCode "1002"

ErrorFields []

Extension

Id "CruiseTraceId"

Value "4a6a4ef2287b46daae809c53ce6f0253"

1

Id "CLOGGING_TRACE_ID"

Value "5629678003315929336"

2

Id "RootMessageId"

Value "921812-0a1c7300-432601-1467766"

  2.代码实现selenium的环境配置

  有很多关于 Firefox 和 Chrome 相关版本的博客。我使用火狐浏览器。配置geckodriver后,无需任何其他配置即可实现添加cookies、代理IP和User-Agent的功能。(网上很多博客需要安装一些插件来实现以上功能,自己踩坑,不用安装就可以添加cookies、代理IP和User-Agent)

  硒可通过以下方式获得

  示例结果

  索引序列号代码有问题。不是从1开始的,但是影响不大。稍微修改一下就足够了。

  代码

<p># -*- coding: UTF-8 -*-

import csv

import re

import time

from selenium import webdriver

import random

# ============================================================================

#******* 更换相应邮轮页面的url和评论页数pages即可,爬 *******

#******* 完一条邮轮更换携程账号名ID和密码和密码pwd *******

#=============================================================================

url = 'https://cruise.ctrip.com/c/8372.html#departure=2019-07-29&sellerid=39348_5049'

ID = '你的携程账号'

pwd = '你的携程密码'

browser = webdriver.Firefox()

browser.get(url)

time.sleep(1)

# 登陆

browser.find_element_by_xpath('/html/body/div[1]/div/ul[2]/li[1]/a/span').click()

browser.find_element_by_id('nloginname').send_keys(ID)

time.sleep(0.7)

browser.find_element_by_id('npwd').send_keys(pwd)

time.sleep(0.8)

button_click = browser.find_element_by_id('nsubmit').click()

time.sleep(5)

# 获取评论总页数

first_page_html = browser.page_source

total_pages = re.findall('cyl_page_point.*?data-index="772">(.*?)</a>

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线