使用selenium登录当当网https://www.dangdang.com/,在搜索栏输入“科幻”进行搜索,然后爬取书籍名称、价格以及评论数,输出前十页的数据即可。
时间: 2024-04-03 09:31:58 浏览: 8
好的,以下是使用Selenium模拟登录当当网、搜索“科幻”并爬取前十页书籍名称、价格和评论数的Python代码示例:
```python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--headless') # 无界面模式
options.add_argument('--disable-gpu') # 禁用GPU加速
driver = webdriver.Chrome(options=options)
driver.maximize_window() # 最大化浏览器窗口
# 登录
driver.get('https://www.dangdang.com/')
login_btn = driver.find_element_by_css_selector('.login_link')
login_btn.click()
iframe = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'login_iframe')))
driver.switch_to.frame(iframe)
username_input = driver.find_element_by_id('username')
password_input = driver.find_element_by_id('password')
username_input.send_keys('your_username')
password_input.send_keys('your_password')
submit_btn = driver.find_element_by_id('login_button')
submit_btn.click()
driver.switch_to.default_content()
# 搜索并爬取数据
keyword = '科幻'
for page in range(1, 11):
url = f'https://search.dangdang.com/?key={keyword}&act=input&page_index={page}'
driver.get(url)
books = driver.find_elements_by_css_selector('.bigimg > li')
for book in books:
name = book.find_element_by_css_selector('.name > a').text
price = book.find_element_by_css_selector('.price > p > span').text
comment_count = book.find_element_by_css_selector('.search_comment_num > a').text
print(name, price, comment_count)
driver.quit()
```
这段代码首先使用Selenium模拟登录当当网,然后在搜索栏中输入关键词“科幻”,并依次爬取前十页的书籍名称、价格和评论数,并打印输出。为了提高爬取效率,这里使用了无界面模式和禁用GPU加速。请将代码中的`your_username`和`your_password`分别替换为你自己的当当网账号和密码。