京东商品评论python爬取评论方法(2024年5月)

京东的反爬做的太厉害了,没办法一劳永逸

话不多说,先上代码,缺少的库自己pip install一下

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
import requests
import re
import pandas as pd
import time
import openpyxl
from urllib.parse import unquote
import time

# 初始化WebDriver
browser = webdriver.Chrome()
# 访问商品页面
browser.get('https://item.jd.com/100034710036.html')

time.sleep(40) #留给你登录的时间

text=""

number=0;

#商品ID的数组
INDEX = ["100002585808", "3972915", "4642692", "100075885857", "100078384502",
         "1803367119", "100092728232", "100097665850","100092728228","100086968888"]


#接下来确定商品ID和页码,以及最终请求网址
for good in range(0,9):
    ID=INDEX[0]
    for page in ra
### 绕过京东反爬机制使用Selenium进行网页抓取 #### 设置合理的请求头 为了模拟真实用户的浏览器行为,设置合适的`User-Agent`和其他HTTP头部信息至关重要。这可以有效减少被识别为自动化脚本的可能性[^3]。 ```python from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument('--headless') # 使用无界面模式运行 chrome_options.add_argument( 'user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0') driver = webdriver.Chrome(options=chrome_options) ``` #### 处理动态加载的内容 由于部分页面内容可能是在滚动到底部时才逐步加载出来的,因此需要特别注意处理这类情况。对于像京东这样的电商网站,在某些情况下可能会遇到数据未能及时加载的问题,这时可以通过查找特定元素来触发重新加载操作[^2]。 ```python import time def scroll_and_load(driver, retries=3): try: while True: driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") # 滚动到页面底部 retry_buttons = driver.find_elements_by_xpath("//button[contains(@class,'retry-btn')]") if not retry_buttons or len(retry_buttons) == 0: break for btn in retry_buttons[:retries]: btn.click() # 点击重试按钮直至不再存在为止 time.sleep(2) except Exception as e: print(f"Error occurred during scrolling and loading: {e}") ``` #### 避免频繁访问 保持适当的时间间隔以防止因短时间内发出过多请求而触发防护措施。可以在每次交互之间加入随机等待时间,使行为更加自然[^1]。 ```python import random time_to_wait = random.uniform(1, 3) # 设定一个介于1秒至3秒之间的随机数作为休眠时间 time.sleep(time_to_wait) ``` 通过上述方法组合应用,能够在一定程度上规避京东针对自动化工具所设立的各种限制条件,实现较为稳定的数据采集过程。然而值得注意的是,任何违反服务条款的行为都是不可取的;建议始终遵循目标站点的规定来进行合法合规的操作。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值