网络爬虫

 

 

图片 1

后生可畏、解析必要和网址组织

通过查阅书籍详细的情况页的HTML代码,大家得以经过查找class="single-title"定位到标题所在的h1标签获得标题,然后经过查找text="Isbn:"定位到"Isbn:"的所在的dt标签,此标签的下一个弟兄节点正是书本ISBN码所在的竹签,通过此标签的string属性可猎取ISBN码内容。

图片 2

代码如下:

运转结果

那风流罗曼蒂克篇首先从allitebooks.com里抓取书籍列表的图书音讯和每本书对应的ISBN码。

Beautiful Soup基础知识:网络爬虫: 从allitebooks.com抓取书籍消息并从amazon.com抓取价格(1): 基础知识Beautiful Soup

 

allitebooks.com这些网站的布局很简单,分页+书籍列表+书籍详细情形页。

通过查看分页成效的HTML代码,通过class="current"能够稳定当前页码所在span标签,此span标签的下三个小伙子a标签正是下风度翩翩页链接所在的价签,

总体代码请移步github:https://github.com/backslash112/book_scraper_python

图片 3

# Get the next page url from the current page url
def get_next_page_url(url):
    page = urlopen(url)
    soup_page = BeautifulSoup(page, 'lxml')
    page.close()
    # Get current page and next page tag
    current_page_tag = soup_page.find(class_="current")
    next_page_tag = current_page_tag.find_next_sibling()
    # Check if the current page is the last one
    if next_page_tag is None:
        next_page_url = None
    else:
        next_page_url = next_page_tag['href']
    return next_page_url

 

接下去黄金年代篇随笔是依照取获得的ISBN码去amazon.com网址获得每本书对应的价格,并通过数量深入剖判的学问对得到的数量开展管理,最后输出到csv文件。风野趣的意中人招待关切本博客,也接待我们留言切磋。

 

 

要想赢得书籍的详细消息和ISBN码,大家供给遍历全数的页码,进入到图书列表,然后从图集列表走入到每本书的详细情形页里,那样就可以抓取详细情形音讯和ISBN码了。

 

代码如下:

三、从书本列表里找到详细情形页的链接

而经过对照最终风华正茂页的span能够开掘,在最后豆蔻梢头页中,通过class="current"找到的span标签却尚无下二个兄弟a标签。所以大家能够经过那或多或少肯定出是不是曾经到最后后生可畏页了。代码如下:

未完待续... 

六、将结果写入文件,以供下一步管理利用

def run():
    url = "http://www.allitebooks.com/programming/net/page/1/"
    book_info_list = []
    def scapping(page_url):
        book_detail_urls = get_book_detail_urls(page_url)
        for book_detail_url in book_detail_urls:
            # print(book_detail_url)
            book_info = get_book_detail_info(book_detail_url)
            print(book_info)
            book_info_list.append(book_info)
        next_page_url = get_next_page_url(page_url)
        if next_page_url is not None:
            scapping(next_page_url)
        else:
            return

    scapping(url)

图片 4

在书籍列表点击书名只怕封面图都得以进来详细情形,则书名和封面图任选叁个,这里选择书名。

五、将三局部代码整合起来

def save_to_csv(list):
    with open('books.csv', 'w', newline='') as fp:
        a = csv.writer(fp, delimiter=',')
        a.writerow(['title','isbn'])
        a.writerows(list)
# Get the book detail info by book detail url
def get_book_detail_info(url):
    page = urlopen(url)
    book_detail_soup = BeautifulSoup(page, 'lxml')
    page.close()
    title_tag = book_detail_soup.find(class_="single-title")
    title = title_tag.string
    isbn_key_tag = book_detail_soup.find(text="Isbn:").parent
    isbn_tag = isbn_key_tag.find_next_sibling()
    isbn = isbn_tag.string.strip() # Remove the whitespace with the strip method
    return { 'title': title, 'isbn': isbn }

四、从本本实际情况页里抓取标题和ISBN码

二、从分页里遍历每意气风发页书籍列表

 

大家处于大数量时期,对数据管理感兴趣的对象招待查看另多个文山会海随笔:使用Python举办数量拆解剖析基础系列随笔汇总

# Get the book detail urls by page url
def get_book_detail_urls(url):
    page = urlopen(url)
    soup = BeautifulSoup(page, 'lxml')
    page.close()
    urls = []
    book_header_tags = soup.find_all(class_="entry-title")
    for book_header_tag in book_header_tags:
        urls.append(book_header_tag.a['href'])
    return urls

大家得以经过查找class="entry-title"定位到书名所在的h2标签,然后通过此标签的a属性就能够获取链接所在的a标签,再经过a标签的string属性可收获链接。

 

本文由金沙电玩城捕鱼发布于www.3015.com,转载请注明出处:网络爬虫

您可能还会对下面的文章感兴趣: