format(self.url%self.page_num)
时间: 2024-04-02 21:35:50 浏览: 17
`format(self.url%self.page_num)` 是 Python 中字符串格式化的一种方式,其中 `self.url` 和 `self.page_num` 是字符串变量,`%` 是字符串格式化操作符。这种方式将 `self.page_num` 的值插入到 `self.url` 中对应的 `%` 占位符处,生成新的字符串。例如,如果 `self.url` 是 `"https://example.com/page=%s"`,`self.page_num` 是 `2`,那么该代码行将生成字符串 `"https://example.com/page=2"`。
相关问题
用PyMuPDF代替下述代码的fitz:import fitz from PyQt5.QtGui import QImage, QPixmap from PyQt5.QtWidgets import QApplication, QLabel, QMainWindow, QScrollArea import sys class MainWindow(QMainWindow): def __init__(self): super().__init__() # 设置窗口标题和大小 self.setWindowTitle("PDF Viewer") self.setGeometry(100, 100, 800, 600) # 创建一个滚动区域,用于显示pdf文件的页面 self.scroll_area = QScrollArea(self) self.setCentralWidget(self.scroll_area) # 创建一个标签,用于在滚动区域中显示pdf文件的页面 self.label = QLabel(self.scroll_area) self.scroll_area.setWidget(self.label) # 加载pdf文件 self.doc = fitz.open("matplotlib.pdf") # 显示pdf文件的第一页 self.show_page(0) def show_page(self, page_num): # 获取pdf文件的指定页面 page = self.doc[page_num] # 将pdf页面转换为QImage对象 pix = page.getPixmap() qimg = QImage(pix.samples, pix.width, pix.height, pix.stride, QImage.Format_RGB888) # 将QImage对象设置到标签中 pixmap = QPixmap(qimg) self.label.setPixmap(pixmap) self.label.resize(pixmap.width(), pixmap.height()) if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_())
可以使用 PyMuPDF 库来代替 fitz 库。以下是使用 PyMuPDF 库来显示 PDF 页面的代码示例:
```python
import fitz
from PyQt5.QtGui import QImage, QPixmap
from PyQt5.QtWidgets import QApplication, QLabel, QMainWindow, QScrollArea
import sys
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 设置窗口标题和大小
self.setWindowTitle("PDF Viewer")
self.setGeometry(100, 100, 800, 600)
# 创建一个滚动区域,用于显示pdf文件的页面
self.scroll_area = QScrollArea(self)
self.setCentralWidget(self.scroll_area)
# 创建一个标签,用于在滚动区域中显示pdf文件的页面
self.label = QLabel(self.scroll_area)
self.scroll_area.setWidget(self.label)
# 加载pdf文件
self.doc = fitz.open("matplotlib.pdf")
# 显示pdf文件的第一页
self.show_page(0)
def show_page(self, page_num):
# 获取pdf文件的指定页面
page = self.doc.loadPage(page_num)
# 将pdf页面转换为QImage对象
pix = page.getPixmap()
qimg = QImage(pix.samples, pix.width, pix.height, pix.stride, QImage.Format_RGB888)
# 将QImage对象设置到标签中
pixmap = QPixmap(qimg)
self.label.setPixmap(pixmap)
self.label.resize(pixmap.width(), pixmap.height())
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
在这个示例中,我们使用了 PyMuPDF 库的 loadPage() 方法来获取 PDF 页面,使用 getPixmap() 方法将页面转换为 QPixmap 对象,并将其设置为 QLabel 对象的图像。
import requests from lxml import etree import time import random import json class DoubanSpider: def __init__(self): # 基准url self.url = "https://movie.douban.com/top250?start={}" # 请求头 self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36'} def get_html(self, url): # 发送请求,得到响应对象 resp = requests.get(url=url, headers=self.headers) # 返回响应字符串 return resp.content.____(1)____ def parse_page(self, html): # 得到XPath解析对象 p = ____(2)____ # 获取li节点列表 li_list = p.____(3)____('//ol[@class="grid_view"]/li') # 初始化一个空列表 movies_lst = [] # 遍历li节点 for li in li_list: # 创建一个空字典 item = {} # 电影名 item['name'] = li.xpath('.//span[@class="title"]/text()')____(4)____.strip() # 评分 item['score'] = li.xpath('.//span[@class="rating_num"]/text()')____(4)____.strip() # 评论数 item['comment_num'] = li.xpath('.//div[@class="star"]/span[4]/text()')____(4)____.strip() print(item) # 将每一部电影追加到列表中 movies_lst.____(5)____(item) return movies_lst def run(self): # 定义一个空列表 movies = [] for page in range(10): # 拼接每一页的url url = self.url.____(6)____(page * 25) # 向url发送请求获取响应内容 html = self.get_html(url) # 得到每一页的电影列表 movie_lst = self.parse_page(html) # 将电影列表加入movies中 movies.____(7)____(movie_lst) # 随机休眠1-2秒 time.____(8)____(random.randint(1, 2)) # 以写模式打开douban.json,编码方式为utf-8 with open('douban.json', __(9)__, encoding='utf-8') as f: # 将电影写入json文件中 json.__(10)_(movies, f, ensure_ascii=False, indent=2) if __name__ == "__main__": # 创建spider对象 spider = DoubanSpider() # 调用对象的run方法 spider.run()
1. 使用 `.text` 方法获取响应字符串。
2. 使用 `etree.HTML(html)` 方法得到XPath解析对象。
3. 使用 `.xpath()` 方法获取li节点列表。
4. 使用 `[0]` 取出列表中的第一个元素,并使用 `.strip()` 方法去除多余空格。
5. 使用 `.append()` 方法将每一部电影追加到列表中。
6. 使用 `.format()` 方法拼接每一页的url。
7. 使用 `.extend()` 方法将每一页的电影列表加入movies中。
8. 使用 `time.sleep()` 方法随机休眠1-2秒。
9. 使用 `'w'` 模式打开douban.json文件。
10. 使用 `json.dump()` 方法将电影列表写入json文件中。