星星飞 发表于 2021-9-5 22:05:09

用bs4模块爬取数据得不到我想要的结果!!!麻烦帮我找一下原因!!

我想得到的数据是图片中 被标记的内容(也就是 上面的地点 :北京,上海,.....等)
# 1.拿到页面源代码
# 2.使用bs4进行解析。拿到数据
import requests
from bs4 import BeautifulSoup

url = "https://movie.douban.com/cinema/nowplaying/yibin/"
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0"}
resp = requests.post(url,headers=headers)
# 解析数据
#1.把页面源代码交给 BeautifulSoup 进行处理,生成 bs 对象
# page = BeautifulSoup(resp.text) #这样写会出现警告,因为 它会把程序当成 HTML 来处理,可能会有一些问题。

page = BeautifulSoup(resp.text,"html.parser") #指定html解析器    解决方法:就是你告诉它 这程序就是 html 就行了,它就不会乱猜了。
# 2.从bs 对象中查找数据
# find(标签,属性=值):谁第一个被找到,就不找了,就一个数据
# find_all(标签,属性=值): 会吧你想要的数据都找给你,是一堆的数据
# table = page.find('li',class_="poster") #class 是python的关键字   可以在属性前面加 _ 下划线,来区别python中的关键字和html中的属性。
table = page.find('div',attrs={'class':'cities-list-item hot'}) #和上面一行的,一样的意思,此时可以避免python中的
# trs = table.find_all('span')
lst=[]
for tr in table:
    tds = tr.find("a")
    lst.append(tds)

print(lst)




得到的每个数据都出现了 -1 这是什么原因啊??我不太目标。就是因为出现了那个-1 这条代码 lst.append(tds.text)是回报错的!!!

这是列表中的数据(也就是最后的得到的结果):[-1, <a class="city-item" href="javascript:;" id="108288" uid="beijing">北京</a>, -1, <a class="city-item" href="javascript:;" id="108296" uid="shanghai">上海</a>, -1, <a class="city-item" href="javascript:;" id="118281" uid="guangzhou">广州</a>, -1, <a class="city-item" href="javascript:;" id="118282" uid="shenzhen">深圳</a>, -1, <a class="city-item" href="javascript:;" id="118318" uid="chengdu">成都</a>, -1, <a class="city-item" href="javascript:;" id="118172" uid="hangzhou">杭州</a>, -1, <a class="city-item" href="javascript:;" id="118254" uid="wuhan">武汉</a>, -1, <a class="city-item" href="javascript:;" id="108309" uid="chongqing">重庆</a>, -1, <a class="city-item" href="javascript:;" id="118159" uid="nanjing">南京</a>, -1, <a class="city-item" href="javascript:;" id="118237" uid="zhengzhou">郑州</a>, -1, <a class="city-item" href="javascript:;" id="118371" uid="xian">西安</a>, -1, <a class="city-item" href="javascript:;" id="118163" uid="suzhou">苏州</a>, -1, <a class="city-item" href="javascript:;" id="118267" uid="changsha">长沙</a>, -1, <a class="city-item" href="javascript:;" id="108289" uid="tianjin">天津</a>, -1, <a class="city-item" href="javascript:;" id="118200" uid="fuzhou">福州</a>, -1, <a class="city-item" href="javascript:;" id="118183" uid="hefei">合肥</a>, -1, <a class="city-item" href="javascript:;" id="118220" uid="jinan">济南</a>, -1, <a class="city-item" href="javascript:;" id="118123" uid="shenyang">沈阳</a>, -1, <a class="city-item" href="javascript:;" id="118221" uid="qingdao">青岛</a>, -1, <a class="city-item" href="javascript:;" id="118146" uid="haerbin">哈尔滨</a>, -1, <a class="city-item" href="javascript:;" id="118201" uid="xiamen">厦门</a>, -1, <a class="city-item" href="javascript:;" id="118174" uid="wenzhou">温州</a>, -1, <a class="city-item" href="javascript:;" id="118124" uid="dalian">大连</a>, -1, <a class="city-item" href="javascript:;" id="118297" uid="dongguan">东莞</a>, -1, <a class="city-item" href="javascript:;" id="118173" uid="ningbo">宁波</a>, -1]

suchocolate 发表于 2021-9-5 22:05:10

import requests
from bs4 import BeautifulSoup

url = "https://movie.douban.com/cinema/nowplaying/yibin/"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0"}
r = requests.get(url, headers=headers)
page = BeautifulSoup(r.text, "html.parser")
result = page.find_all('a', attrs={'class': 'city-item'})
for i in result:
    print(i.string)
页: [1]
查看完整版本: 用bs4模块爬取数据得不到我想要的结果!!!麻烦帮我找一下原因!!