import time\nimport random\nimport re\nfrom selenium import webdriver\nfrom selenium.webdriver.common.keys import Keys\n\n# 创建浏览器对象\ndriver = webdriver.Chrome()\n\n# 打开b站首页\ndriver.get("https://miaosha.jd.com/")\n\n# 输入搜索关键词\nsearch_input = driver.find_element_by_xpath("//[@id='key']")\nsearch_input.send_keys("人工智能图书")\ntime.sleep(0.1)\n\n# 按回车键进行搜索\nsearch_input.send_keys(Keys.ENTER)\ntime.sleep(3)\n\n# 获取当前窗口句柄\ncurrent_window = driver.current_window_handle\n# 切换到新打开的窗口\nfor window_handle in driver.window_handles:\n if window_handle != current_window:\n driver.switch_to.window(window_handle)\n break\n\n# 获取搜索结果页面的所有书名、价格、评论信息\nbooks = driver.find_elements_by_xpath("//[@id='J_goodsList']/ul/li")\n\n# 遍历每本书的信息\nfor book in books:\n try:\n # 获取书名、价格、评论信息\n book_name = book.find_element_by_xpath(".//div/div[3]")\n price = book.find_element_by_xpath(".//div/div[2]")\n\n # 判断评论信息是否包含"评价"两个字\n comment = book.find_element_by_xpath(".//div/div[5]")\n if "评价" not in comment.text:\n comment = book.find_element_by_xpath(".//div/div[6]")\n\n print("书名: " + book_name.text) # 打印书名\n\n # 获取价格信息\n price_text = price.text\n price_match = re.search(r"¥(\d+.\d+)", price_text)\n if price_match:\n price_value = price_match.group(1)\n print("价格: " + price_value) # 打印价格\n else:\n print("未找到价格信息")\n\n # 使用正则表达式提取评论数\n comment_match = re.search(r"(\d+)", comment.text)\n if comment_match:\n comment_text = comment_match.group(1)\n print("评论数: " + comment_text) # 打印评论数\n else:\n print("未找到评论数")\n\n # 点击书名打开详情页面\n book_name.click()\n time.sleep(10)\n\n # 获取当前窗口句柄\n current_window = driver.current_window_handle\n # 切换到详情页面的窗口\n window_handle = driver.window_handles[1]\n driver.switch_to.window(window_handle)\n\n # 获取当前页面的URL\n current_url = driver.current_url\n\n # 查找出版社信息\n publisher = None\n possible_xpaths = [\n "//[@id='detail']/div[2]/div[1]/div[1]/ul/li/a",\n "//[@id='detail']/div[2]/div[1]/div[1]/ul/li[2]/a",\n "//[@id='detail']/div[2]/div[1]/div[1]/ul/li[1]/a[1]"\n ]\n for xpath in possible_xpaths:\n publishers = driver.find_elements_by_xpath(xpath)\n if publishers:\n publisher = publishers[0]\n if "出版社" in publisher.text:\n break\n\n if publisher:\n publisher_text = re.search(r"出版社:(.+)", publisher.text)\n if publisher_text:\n publisher_value = publisher_text.group(1)\n print("出版社: " + publisher_value)\n else:\n print("未找到出版社信息")\n else:\n print("未找到出版社信息")\n \n # 查找出版年份信息\n publish_year = None\n possible_xpaths = [\n "//[@id='detail']/div[2]/div[1]/div[1]/ul/li[8]",\n "//[@id='detail']/div[2]/div[1]/div[1]/ul/li[6]",\n "//[@id='detail']/div[2]/div[1]/div[1]/ul/li[5]"\n ]\n for xpath in possible_xpaths:\n publish_years = driver.find_elements_by_xpath(xpath)\n if publish_years:\n publish_year = publish_years[0]\n if "出版时间" in publish_year.text:\n break\n\n if publish_year:\n publish_year_text = re.search(r"出版时间:(.+)", publish_year.text)\n if publish_year_text:\n publish_year_value = publish_year_text.group(1)\n print("出版年份: " + publish_year_value)\n else:\n print("未找到出版年份信息")\n else:\n print("未找到出版年份信息")\n \n # Click on the "商品评价" button\n shop_button = driver.find_elements_by_xpath("//[@id='detail']/div[1]/ul/li[5]" )[0]\n shop_button.click()\n time.sleep(5)\n\n # 爬取并输出评价信息(好评中评差评数目)\n good_comments = driver.find_elements_by_xpath("//[@id='comment']/div[2]/div[2]/div[1]/ul/li[5]/a/em")\n for comment in good_comments:\n print("好评:" + comment.text.strip("()"))\n medium_comments = driver.find_elements_by_xpath("//[@id='comment']/div[2]/div[2]/div[1]/ul/li[6]/a/em")\n for comment in medium_comments:\n print("中评:" + comment.text.strip("()"))\n bad_comments = driver.find_elements_by_xpath("//[@id='comment']/div[2]/div[2]/div[1]/ul/li[7]/a/em")\n for comment in bad_comments:\n print("差评:" + comment.text.strip("()"))\n\n # 关闭当前窗口,回到搜索结果页面\n driver.close()\n driver.switch_to.window(driver.window_handles[0])\n\n # 生成随机的点击延迟时间\n time.sleep(random.randint(1, 5))\n except Exception as e:\n print(str(e))\n print("--------------------------------------------------") # 使用分隔符分隔每本图书信息\n\n# 关闭浏览器\ndriver.quit()\n

京东人工智能图书信息爬取

原文地址: https://www.cveoy.top/t/topic/pAPg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录