pyquery提取网页中的数据问题
本帖最后由 python小小白哟 于 2023-8-22 10:36 编辑我只想提取第一个span的class为title的text文本
代码如下:
from pyquery import PyQuery
import requests
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.203"
}
resp = requests.get("https://movie.douban.com/top250?start=0&filter=",headers=headers).text
pq = PyQuery(resp)
c = pq.find("span.title")
aaa = c.items()
for i in aaa:
print(i.text())
我修改了这几行代码就报错了:
aaa = c.items()
for i in aaa:
print(i.text())
TypeError: 'generator' object is not subscriptable
请问该怎么修改代码呢?
问题描述:
在使用pyquery提取网页数据时,只想提取第一个span标签中class为title的文本内容。
解决方案:
根据你提供的代码,你可以使用以下方法来修改代码以提取第一个span标签的文本内容:
from pyquery import PyQuery
import requests
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.203"
}
resp = requests.get("https://movie.douban.com/top250?start=0&filter=",headers=headers).text
pq = PyQuery(resp)
c = pq.find("span.title")
first_span_text = c.eq(0).text()
print(first_span_text)
在这个例子中,我们使用了 eq(0) 方法来选择第一个匹配的元素,并使用 text() 方法提取其文本内容。
希望这个解决方案对你有帮助!如果你有任何疑问,请随时提问。 您想要使用PyQuery从网页中提取第一个class为"title"的span标签的文本。在您给出的代码中,有一些错误导致了TypeError。
您可以按照以下方式修改代码:
from pyquery import PyQuery
import requests
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.203"}
resp = requests.get("https://movie.douban.com/top250?start=0&filter=", headers=headers).text
pq = PyQuery(resp)
c = pq("span.title:first")# 选择第一个class为"title"的span标签
text = c.text()# 获取文本内容
print(text)
这里的修改主要在以下几点:
1. 将pq.find("span.title")修改为pq("span.title:first"),使用CSS选择器选择第一个class为"title"的span标签。
2. 直接使用c.text()获取文本内容。
请注意,PyQuery中的选择器语法与CSS选择器类似,可以使用常见的CSS选择器语法来选择特定的元素。在这个例子中,我们使用:first伪类选择器来选取第一个匹配的元素。
如果问题已经解决,请设置最佳答案 isdkz 发表于 2023-8-22 10:31
问题描述:
在使用pyquery提取网页数据时,只想提取第一个span标签中class为title的文本内容。
不好意思说错了是提取整个页面的所有第一个span标签类为title的文本内容。
陶远航 发表于 2023-8-22 10:31
您想要使用PyQuery从网页中提取第一个class为"title"的span标签的文本。在您给出的代码中,有一些错误导致 ...
不好意思说错了是提取整个页面的所有第一个span标签类为title的文本内容。 python小小白哟 发表于 2023-8-22 10:37
不好意思说错了是提取整个页面的所有第一个span标签类为title的文本内容。
不是单独提取第一个span标签,是整个页面所有的span标签的第一个text内容 python小小白哟 发表于 2023-8-22 10:37
不好意思说错了是提取整个页面的所有第一个span标签类为title的文本内容。
你好!你想要从一个页面中提取所有第一个<span>标签类为"title"的文本内容,但是在修改代码时遇到了错误。错误提示是TypeError: 'generator' object is not subscriptable,这是因为你正在尝试对生成器对象进行下标操作,但生成器并不支持这种操作。
为了修复这个问题,你可以直接遍历生成器对象,而不是尝试通过下标访问。这里是修复后的代码:
from pyquery import PyQuery
import requests
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.203"
}
resp = requests.get("https://movie.douban.com/top250?start=0&filter=", headers=headers).text
pq = PyQuery(resp)
c = pq.find("span.title")
for i in c.items():
print(i.text())
在这个修复后的代码中,我直接遍历了生成器对象c.items(),然后输出每个元素的文本内容。这样就可以正确地提取出所有第一个<span>标签类为"title"的文本内容了。
页:
[1]