使用selenium登录当当网https://www.dangdang.com/,在搜索栏输入“科幻”进行搜索,然后爬取书籍名称、价格以及评论数,输出前十页的数据即可。
时间: 2024-04-04 10:34:23 浏览: 99
好的,我可以帮你解答这个问题。首先需要安装selenium库,以及Chrome浏览器驱动,可以使用以下代码安装:
```
pip install selenium
```
Chrome浏览器驱动下载地址:https://sites.google.com/a/chromium.org/chromedriver/downloads
下载完成后,将驱动程序放在系统环境变量中,或者将其路径添加到PATH环境变量中。
接下来,你可以使用以下代码实现登录当当网并进行搜索:
```
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 打开浏览器
browser = webdriver.Chrome()
# 登录当当网
login_url = 'https://login.dangdang.com/signin.aspx?returnurl=https%3a%2f%2fwww.dangdang.com%2f'
browser.get(login_url)
username_input = browser.find_element_by_id('txtUsername')
password_input = browser.find_element_by_id('txtPassword')
submit_button = browser.find_element_by_id('btnLogin')
username_input.send_keys('your_username') # 替换为你的用户名
password_input.send_keys('your_password') # 替换为你的密码
submit_button.click()
WebDriverWait(browser, 10).until(EC.url_contains('dangdang.com'))
# 搜索书籍
search_url = 'https://search.dangdang.com/?key=%BF%AA%BB%FA&act=input'
browser.get(search_url)
input_box = browser.find_element_by_id('key_S')
input_box.send_keys('科幻')
input_box.send_keys(Keys.RETURN)
WebDriverWait(browser, 10).until(EC.url_contains('search.dangdang.com'))
```
接下来,你可以使用以下代码爬取每一页的数据:
```
import time
from bs4 import BeautifulSoup
for page in range(1, 11):
page_url = f'https://search.dangdang.com/page_{page}?key=%BF%AA%BB%FA'
browser.get(page_url)
WebDriverWait(browser, 10).until(EC.url_contains(page_url))
time.sleep(3) # 等待页面加载完成
# 解析页面数据
soup = BeautifulSoup(browser.page_source, 'html.parser')
items = soup.find_all('li', {'class': 'list_single'})
for item in items:
name = item.find('a', {'class': 'pic'}).get('title')
price = item.find('span', {'class': 'price_n'}).text
comment_count = item.find('a', {'class': 'search_comment_num'}).text
print(name, price, comment_count)
```
这段代码会输出前十页中每本书的名称、价格和评论数。你可以根据需要进行修改和调整。
阅读全文