def get_content(html_url): response = get_response(html_url=html_url) selector = parsel.Selector(response.text) title = selector.css('.grap--h2 ::text').get() content_list = selector.css('.grap ::text').getall() content = ''.join(content_list) return title, content def main(): url = f'https://hongloumeng.5000yan.com/' name, link_list = get_novel_info(novel_url=url) for link in link_list: title, content = get_content(html_url=link) save(name, title, content) word=[] wordlist = [] #这里是定义函数加进列表里,想让entry的内容作为变量参与函数的运行 def add_to_list(): text = entry2.get() words.append(text) wordlist = [] for word in sWords: if word in words: wordlist.append(word) def function(): f=open('D:\Python文档保存\红楼梦.txt','r',encoding='utf-8') text = f.read() plt.rcParams['font.sans-serif'] = 'SimHei' sWords = jieba.lcut(text) #wordlist = [] #words = ['刘姥姥', '贾', '王夫人'] #for word in sWords: # if word in words: # wordlist.append(word) word_counts = collections.Counter(wordlist) print(wordlist) print(word_counts) #按钮3 button3=tk.Button(root,text='词频统计图',bg="#FFB6C1",command=func()) button3.place(x=320,y=165) 把前面的代码绑定在这个按钮上,改一下代码
这是一段 Python 代码,包括两个函数和两个列表。
get_content(html_url) 函数的作用是从给定的 html_url 中获取网页内容(包括标题和正文),并返回标题和正文的字符串形式。
main() 函数利用 get_novel_info() 函数获取小说信息(小说名和链接列表),然后遍历链接列表,调用 get_content() 函数获取每个链接对应的内容,并将小说名、章节名、正文内容一起保存。
word 和 wordlist 两个变量在这段代码中没有用到,可能是之后代码需要用到的变量。
def parse_book_info(self, url): response = self.get_response(url=url) selector = Selector(text=response.text) page = selector.xpath("//div[@class='paginator']/a[last()]/text()").get()
这段代码定义了一个名为 parse_book_info
的方法,用于解析图书信息。它接受一个参数 url
,表示要解析的页面的URL。
首先,它调用了之前定义的 get_response
方法来发送 HTTP 请求并获取响应。然后,使用 parsel
库解析响应的 HTML 页面,创建一个 Selector
对象。
接下来,使用 XPath 表达式选取了页面中的分页控件,并提取了最后一个页码(即最大页码)。这个值将被用于后续的循环操作。
这段代码的作用是获取指定页面的最大页码,并将其存储在变量 page
中。您还有其他问题吗?
class DouBanBook(object): def __init__(self, start_url, headers, queue): self.start_url = start_url self.headers = headers self.queue = queue def get_response(self, url): try: session = requests.Session() response = session.get(url, headers=self.headers) response.encoding = "utf-8" response.raise_for_status() return response except Exception as e: logging.warn(e.args, exc_info=False) logging.basicConfig(level=logging.WARN, filename="doubanbook.log", filemode="w", format='%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s', datefmt='%a, %d %b %Y %H:%M:%S') # 获取图书标签页信息和链接 def parse_start_url(self, response): selector = Selector(text=response.text) # td_list = selector.xpath("//div[@class='article']/div[@class='']/div/table/tbody/tr/td") td_list = selector.xpath("//table[@class='tagCol']/tbody/tr/td") for td in td_list: items = {} items['book_tag'] = td.xpath("./a/text()").get() # 图书标签 tag_href = td.xpath("./a/@href").get() # 标签链接 tag_url = "https://book.douban.com" + tag_href self.queue.put(tag_url)
这段代码定义了一个名为 DouBanBook
的类,它具有以下几个方法:
__init__(self, start_url, headers, queue)
: 这是类的构造函数,用于初始化类的实例。它接受三个参数:start_url
(起始URL)、headers
(HTTP请求头)和queue
(队列)。get_response(self, url)
: 这是一个用于发送HTTP请求并获取响应的方法。它使用requests
库发送一个 GET 请求,并设置了请求头。如果请求成功,则返回响应对象;如果发生异常,则记录异常并返回 None。parse_start_url(self, response)
: 这个方法用于解析起始URL的响应,并提取图书标签页信息和链接。它使用parsel
库解析 HTML 页面,然后使用 XPath 表达式提取目标数据。最后,将标签链接放入队列中。
该类的作用是从豆瓣图书网站上获取图书标签页的信息和链接,并将链接放入队列中供后续处理。您还有其他问题吗?
相关推荐











