晋江年下文爬取【xpath】

‘‘‘
@Modify Time      @Author   目标:晋江年下文 爬取6页
------------      ------- http://www.jjwxc.net/search.php?kw=%C4%EA%CF%C2&t=1&p=1
2019/8/31 15:19   laoalo
‘‘‘

import requests
from lxml import etree

head = {
    ‘User-Agent‘:‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134‘,
    ‘Host‘:‘www.jjwxc.net‘,
}

def get_page_detail(url):
    # 得到当前页面中每本书的url
    response = requests.get(url=url,headers=head,timeout=50).text
    book = etree.HTML(response).xpath(‘//h3[@class="title"]/a/@href‘)
    # print(etree.tostring(book,encoding=‘gbk‘).decode(‘gbk‘))
    return book

def get_book_detial(book_url):
    # 得到每本书的详细信息
    try:
        response = requests.get(url=book_url, headers=head, timeout=50).text
        book_detail = etree.HTML(response)
        book = {}

        title = book_detail.xpath("//span[@itemprop=‘articleSection‘]//text()")[0].encode(‘ISO-8859-1‘).decode(‘gbk‘)
        book[‘title‘] = title
        author = book_detail.xpath("//span[@itemprop=‘author‘]//text()")[0].encode(‘ISO-8859-1‘).decode(‘gbk‘)
        book[‘author‘] = author
        information = book_detail.xpath("string(//div[@id=‘novelintro‘])").encode(‘ISO-8859-1‘).decode(‘gbk‘)
        book[‘information‘] = information

        return book
    except IndexError as e:
        print(e,‘下标越界‘)

    # targets = book_detail.xpath("//text()")
    # for index,target in enumerate(targets):
    #     print(index,‘*‘*30,target.encode(‘ISO-8859-1‘).decode(‘gbk‘))
    # ‘‘‘
    # 标签爬不出来
    # ‘‘‘

def spider():
    bookshelf = []
    for i in range(1,5):
        print("这是第{index}页的信息\n\n\n".format(index=i))
        url = ‘http://www.jjwxc.net/search.php?kw=%C4%EA%CF%C2&t=1&p={page_num}‘.format(page_num=i)
        book_list = get_page_detail(url)
        for i in book_list:
            # print(get_book_detial(i))
            bookshelf.append(get_book_detial(i))
    return bookshelf
        # print(url)
if __name__ == ‘__main__‘:
    # print(get_book_detial("http://www.jjwxc.net/onebook.php?novelid=3402626"))
    print(spider())

时常会有:"list index out of range 下标越界",或是"TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败",有的师傅说是因为访问过快,导致list的赋值没附上……代码有待优化

原文地址:https://www.cnblogs.com/chrysanthemum/p/11449324.html

时间: 2024-10-17 02:05:16

晋江年下文爬取【xpath】的相关文章

Python 2.7_利用xpath语法爬取豆瓣图书top250信息_20170129

大年初二,忙完家里一些事,顺带有人交流爬取豆瓣图书top250 1.构造urls列表 urls=['https://book.douban.com/top250?start={}'.format(str(i) for i in range(0, 226, 25))] 2.模块 requests获取网页源代码 lxml 解析网页 xpath提取 3.提取信息 4.可以封装成函数 此处没有封装调用 python代码: #coding:utf-8 import sys reload(sys) sys.

Java - XPath解析爬取内容

code { margin: 0; padding: 0; white-space: pre; border: none; background: transparent; } pre { background-color: #f8f8f8; border: 1px solid #ccc; font-size: 13px; line-height: 19px; overflow: auto; padding: 6px 10px; border-radius: 3px; } pre code, p

requests+xpath+map爬取百度贴吧

1 # requests+xpath+map爬取百度贴吧 2 # 目标内容:跟帖用户名,跟帖内容,跟帖时间 3 # 分解: 4 # requests获取网页 5 # xpath提取内容 6 # map实现多线程爬虫 7 import requests 8 from requests.exceptions import RequestException 9 from lxml import etree 10 import json 11 from multiprocessing.dummy imp

【个人】爬虫实践,利用xpath方式爬取数据之爬取虾米音乐排行榜

实验网站:虾米音乐排行榜 网站地址:http://www.xiami.com/chart 难度系数:★☆☆☆☆ 依赖库:request.lxml的etree (安装lxml:pip install lxml) IDEA开发工具:PyCharm_2017.3 Python版本:Python3 期望结果:爬取出排行版歌名以及对应歌手 运行效果图: 音乐排行榜: 爬取数据结果图: 像这种简单的爬取就没必要使用Scrapy框架进行处理,是在有点大材小用,不过如果你刚开始学Scrapy的话,拿这些简单的练

Python爬虫:现学现用Xpath爬取豆瓣音乐

爬虫的抓取方式有好几种,正则表达式,Lxml(xpath)与Beautiful,我在网上查了一下资料,了解到三者之间的使用难度与性能 三种爬虫方式的对比. 抓取方式 性能 使用难度 正则表达式 快 困难 Lxml 快 简单 BeautifulSoup 慢 简单 这样一比较我我选择了Lxml(xpath)的方式了,虽然有三种方式,但肯定是要选择最好的方式来爬虫,这个道理大家都懂,另外有兴趣的朋友也可以去了解另外两种爬虫方式! 好了现在来讲讲xpath 由于Xpath属于lxml模块,所以首先需要安

爬虫入门之爬取策略 XPath与bs4实现(五)

爬虫入门之爬取策略 XPath与bs4实现(五) 在爬虫系统中,待抓取URL队列是很重要的一部分.待抓取URL队列中的URL以什么样的顺序排列也是一个很重要的问题,因为这涉及到先抓取那个页面,后抓取哪个页面.而决定这些URL排列顺序的方法,叫做抓取策略.下面重点介绍几种常见的抓取策略: 1 深度优先遍历策略: 深度优先遍历策略是指网络爬虫会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接.我们以下面的图为例:遍历的路径:A-F-G E-H-I B C D

爬取知乎热榜标题和连接 (python,requests,xpath)

用python爬取知乎的热榜,获取标题和链接. 环境和方法:ubantu16.04.python3.requests.xpath 1.用浏览器打开知乎,并登录 2.获取cookie和User-Agent 3.上代码 1 import requests 2 from lxml import etree 3 4 def get_html(url): 5 headers={ 6 'Cookie':'', 7 #'Host':'www.zhihu.com', 8 'User-Agent':'Mozill

爬取学校官网新闻-bs与xpath的恩怨情仇

为了更好地学习<自然语言处理>这一门课,我们的老师叫我们组团去刷学校官网,我刚开始还以为很简单,事实证明,我错了,固执的凭借xpath去解析内容非常的难,还有我最后用bs4轻松解析,这个项目让我看清了xpath适合提取单个标签内的内容,而bs4明显适合去提取大段的内容,然后再通过join,strip,replace,split等内容就可以去掉转义字符,空格和转换为列表. 另外,老师也要求我们使用正则表达式,我用正则表达式去提取特定格式的时间还有在提取出来的文本内容中提取出最后一个括号内的内容,

XPath之电影天堂数据爬取

2019.5.19,今天写这个实例写了几个小时,虽然不多,100行代码左右,但是貌似是学python以来代码写得最多的一次了. 主要是看了这个视频https://www.bilibili.com/video/av51650499?from=search&seid=10478614069026676839 然后自己尝试写了一下,大部分都能写出来,就是最后获取“主演”和“简介”的时候不太好获取,需要运用到下标并使用循环. 另外,还需要注意的是,我写的这个程序是以电影名称命名然后以json格式存储在本