爬取三国演义小说 正则

0

要使用正则表达式来爬取《三国演义》小说的内容,首先需要明确你将从哪里爬取这些内容。通常,这可能是从一个网页或文本文件中提取。下面是一个简单的例子,假设你要从一个HTML页面中提取《三国演义》的章节标题和内容。

1.确定目标网站选择一个提供《三国演义》全文的合法网站作为数据源。确保你的爬虫行为遵守该网站的robots.txt规则,并且不会对网站造成过大的访问压力。

2.分析页面结构使用浏览器的开发者工具(如Chrome的Inspect元素)查看页面的HTML结构,找到存放章节标题和内容的标签。

3.编写正则表达式根据页面结构编写正则表达式。这里给出一个简单的例子,假设每个章节的标题都包含在`

`标签中,而内容则包含在紧随其后的`

`标签中:

```pythonimportre

#假设html是获取到的整个HTML页面内容html="""

第一回宴桃园豪杰三结义斩黄巾英雄首立功

东汉末年,天下大乱...

"""

#匹配章节标题title_pattern=re.compile(r'

(.*?)

',re.S)titles=title_pattern.findall(html)

#匹配章节内容content_pattern=re.compile(r'

(.*?)

',re.S)contents=content_pattern.findall(html)

foriinrange(len(titles)):print("章节标题:",titles[i])print("章节内容:",contents[i])```

4.注意事项合法性:确保你有权爬取和使用这些数据。效率与准确性:正则表达式可能不够灵活处理复杂的HTML结构变化,考虑使用更强大的解析库如BeautifulSoup。性能:对于大量数据的爬取,考虑使用异步请求等技术提高效率。错误处理:添加异常处理机制,以应对网络问题或数据格式不符合预期的情况。

5.使用BeautifulSoup代替正则虽然上面的例子使用了正则表达式,但在实际开发中,处理HTML时推荐使用像BeautifulSoup这样的库,它更加健壮和易于维护:

```pythonfrombs4importBeautifulSoup

soup=BeautifulSoup(html,'html.parser')

titles=[title.get_text()fortitleinsoup.find_all('h2')]contents=[content.get_text()forcontentinsoup.find_all('p')]

fortitle,contentinzip(titles,contents):print("章节标题:",title)print("章节内容:",content)```

这样不仅可以更准确地抓取数据,还可以更好地处理HTML中的特殊情况,比如嵌套标签、属性等。

·输出结果赋值给result,打印输出一下,可以看到输出结果成功且输出的是列表,说明如果匹配到了多个结果,那么这多个结果都将会存放在这个列表当中。

我是Python进阶者。这篇文章主要给大家介绍了小说内容的获取方法,基于网络爬虫,通过requests爬虫库和bs4选择器进行实现,并且给大家例举了常见问题的处理方法。

只要将URL中的这个数字拿到就可以了,比方说这里是951,那么这个数字代表的就是这本书的书号,在后面的代码中可以用得到的。

爬取三国演义小说 正则

需要用到\\来进行转义,对于回车\\n不能repalce成'',否则整篇小说就没有回车换行了,运行后爬取到的页面如下所示:

secondContent = str(secondContent).replace('\\r','').replace('\\n','\n').replace(u'\\u3000', u'').replace("
", "")

secondContent = secondContent.strip("").strip('\r\n').replace(u'\u3000', '').replace("
", "")

但是发现虽然代码里处理了\r\n\u3000\u3000的标记,但是如下实际的爬取结果里仍然有这些标记,待继续研究消除方法。

secondContent = secondContent.strip("").strip('\r\n').replace(u'\u3000', '').replace("
", "")

secondContent = re.findall(r'

(.*?)

', str(firstContent), re.S)[0]

网页游戏在线游戏网站大全 firstContent = re.findall(r'', str(html.content.decode("GBK")), re.S)

charterName = re.findall('.html">(.*?)', str(firstRE), re.S)

charterURL = re.findall('', str(firstRE), re.S)

firstRE = re.findall(r'正文(.*?)', str(html.content.decode("GBK")), re.S)

专题: 三国演义音小说   伪三国演义小说   小说巜三国演义