• 大小: 5KB
    文件类型: .py
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: Python
  • 标签: 爬虫  python  isbn  书籍  

资源简介

Python写的爬虫,可以实现通过isbn码查询书籍详细信息。仅供学习,勿作商用,如有违反,后果自负。
注意:此为2.0版本,第一个版本由于某种原因已不能使用。

资源截图

代码片段和文件信息

#-*- coding:utf-8 -*-

“““
    Author:万俟淋曦
    Time:2019年10月13日11:00:28
    Function:通过isbn查询书籍详细信息
    Statement:仅供学习,勿作商用,如有违反,后果自负
    P.S.:如有问题可以联系我,qq1055311345,好友验证:isbn
“““

import re
import sys
import urllib
import requests
from lxml import etree
from bs4 import BeautifulSoup
from selenium import webdriver

def isbn_search(isbn):
    “““
        输入:isbn
        输出:豆瓣搜索结果的书籍链接
    “““
    # 创建浏览器对象
    browser = webdriver.PhantomJS()
    # 请求网址
    browser.get(“https://book.douban.com/subject_search?search_text=“ + isbn + “&cat=1001“)
    # 解析网页信息
    soup = BeautifulSoup(browser.page_source “lxml“)
    # 读取标签内容
    tags = soup.select(“#root > div > div > div > div > div > div > a“)
    # print(type(tags))
    # print(info)
    # 正则查找href链接
    link_list = re.findall(r“(?<=href=\“).+?(?=\“)|(?<=href=\‘).+?(?=\‘)“ str(tags[0]))
    # 关闭浏览器
    browser.close()
    return link_list[0]

def get_people_num(douban_link):
    “““
    获取评价人数,未使用
    “““
    # douban_link=‘http://book.douban.com/subject/6082808/?from=tag_all‘ # For Test
    g=requests.get(douban_link)
    soup=BeautifulSoup(g.content“lxml“)

    people_num = soup.find(‘div‘ {‘class‘: ‘rating_sum‘}).findAll(‘span‘)[1].string.strip()
    return people_num

def book_info(douban_link):
    “““
        输入:豆瓣书籍链接
        输出:书籍信息
    “““
    headers = {‘User-Agent‘:‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) \
        AppleWebKit/537.36 (KHTML like Gecko) Chrome/80.0.3987.149 Safari/537.36‘}
    # 请求网址
    g=requests.get(douban_linkheaders=headers)
    # 解析网页信息
    soup=BeautifulSoup(g.content“lxml“)
    # 由于书名和其他信息不在一起,单独处理书名
    title = “书名: 《“ + re.sub(‘[\f\n\r\t\v]‘‘‘re.sub(‘<([^>]+?)>‘‘‘str((soup.select(“#wrapper > h1 > span“))[0]))) + “》“
    # 存储书籍信息
    infos = [title]
    # 返回特定区域的html代码块
    span_list = soup.findChild(‘div‘{‘id‘:‘info‘})
    # try:
    for item in str(span_list).spl

评论

共有 条评论