python新手求助 抓取网页 无法遍历 只出来一个结果
问题如下:#_*_ coding:"UTF-8" _*_import os,sys
import requests
from bs4 import BeautifulSoup
import re
#-------------------------------------
url='http://www.dashuzhai.com/lingyikongbu/yichangguishi/yichangguishi1guidaopia/'
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
}
r=requests.get(url,headers=headers)
r.encoding="gbk"
mulu=BeautifulSoup(r.text,'html.parser')
print(mulu.find('title').get_text())
dict={}
for i in mulu.find_all('div',class_="mulu"):
for j in i.find_all('ul'):
print(j.find('a').getText())
#print(i.find('a',href=re.compile('/lingyikongbu/\D')).getText())
我用遍历寻找mululist 然后用正则搜索href 并或许 改text 但是每次就出来一个墓地枷声1
后面的就遍历不到了,搞不清楚问题在哪里
如果我用 find_all('div',class_="mulu") 然后获取他的getText倒是能够获得 但并不是遍历出来的 结果
后面我要每章名字对应地址,求各位老师指点迷津 如果数据在响应体里面 可以用 xpath 比较方便 这正则表达式,也是醉了{:301_971:} 本帖最后由 小屎球 于 2020-4-14 14:51 编辑
mulu中就一个div,所以只循环一遍就完了
随便改了下 你再细化一下
print(mulu.find('title').get_text())
dict={}
for i in mulu.find_all('div',class_="mulu"):
j = i.find_all('li')
for li_a in j:
print(li_a.find('a').getText()) 用 select 或select_one。mulu.select('.mulu .mululist a') 你这写的,就一个mulu,为什么要循环?
直接搜索所有class为mululist的标签就好了,或者先找到mulu然后再找该标签下的所有mululist
soup=BeautifulSoup(r.text,'html.parser')
mulu = soup.find('div', class_='mulu')
for i in mulu.find_all('li', class_='mululist'):
hrefStr = i.find('a')["href"]
str = i.find('a').text
lntuer 发表于 2020-4-14 14:31
这正则表达式,也是醉了
嘿嘿,我刚学的自己想的,给我一个示范 如果匹配/开头的字符串呢? 小屎球 发表于 2020-4-14 14:33
mulu中就一个div,所以只循环一遍就完了
随便改了下 你再细化一下
print(mulu.f ...
mulu 下的字 divv 包含了mululist 我以为都能循环出来,原来这样不行的嘛?因为我单独print(j),是包含mulu下 所有mululist以及 href的,j.find('a',href)这样反而只出来一个,真奇怪,这是为什么呀 大海呀大海 发表于 2020-4-14 14:57
你这写的,就一个mulu,为什么要循环?
直接搜索所有class为mululist的标签就好了,或者先找到mulu然后再 ...
但是mulu 下面包含了很多字的mululist 我以为可以全部遍历出来。
因为我试过
for i in mulu.find_all('li', class_='mulu'):
print(i)
里面mululist的内容全部都包含有的,就是取text的时候 就出来一个,所以觉得奇怪 hahawangzi 发表于 2020-4-14 15:02
但是mulu 下面包含了很多字的mululist 我以为可以全部遍历出来。
因为我试过
取的时候循环取就好