鱼C论坛

 找回密码
 立即注册
查看: 949|回复: 3

[已解决]BeautifulSoup

[复制链接]
发表于 2020-7-31 01:11:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 lawrence1357 于 2020-7-31 02:09 编辑

import requests
import bs4
import re

url = r'https://tongling.anjuke.com/sale/zongyangxian/'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36'
}


req = requests.get(url, headers=headers)

soup = bs4.BeautifulSoup(req.text, 'html.parser')

target_housetitle = soup.find_all('div', class_="house-title")
target_detailsitem = soup.find_all('div', class_="details-item")
target_commaddress = soup.find_all('span', class_="comm-address")
target_proprice = soup.find_all('div', class_="pro-price")
target_itemimg = soup.find_all('div', class_="item-img")

for tar in target_detailsitem:
   print(tar)

----------------打印结果---------------------------
3室2厅|120m2|低层(共16层)|2019年建造



                    枞阳碧桂园  
                    枞阳县-汉武生态园-东湖路,近蒲洲路               


3室2厅|130m2|低层(共17层)|2014年建造



                    华翔观天下  
                    枞阳县-汉武生态园-金山大道               


3室2厅|129m2|低层(共17层)|2017年建造
                        ...
                        ...
                        ...
----------------打印结果---------------------------


1.请问这个里面的换行,空格还有特殊的字符为什么替换不掉呢?

2.target_detailsitem = soup.find_all('div', class_="details-item")
  target_commaddress = soup.find_all('span', class_="comm-address"),这两句对应的源码是:
-----------------------------------------------------------------------------------------------------------------------
<div class="details-item">
<span class="comm-address" title="阳光国际城&#160;&#160;枞阳县-汉武生态园-渡江路">
                    阳光国际城&#160;&#160;
                    枞阳县-汉武生态园-渡江路                </span>
</div>
<div class="details-item">
<span>3室2厅</span><em class="spe-lines">|</em><span>134m2</span><em class="spe-lines">|</em><span>中层(共6层)</span><em class="spe-lines">|</em><span>2012年建造</span>
</div>
-----------------------------------------------------------------------------------------------------------------------
请问这种标签的class=“****”是一样的应该怎么写? target_commaddress = soup.find_all('span', class_="comm-address")这个写法对吗?

因为用target_detailsitem = soup.find_all('div', class_="details-item")这句的话,
target_detailsitem.span.text的话,阳光国际城&#160;&#160;枞阳县-汉武生态园-渡江路  也会被打印出来

最佳答案
2020-8-1 09:27:57
lawrence1357 发表于 2020-7-31 15:17
for a in target_detailsitem:
    x=a.text
    x.replace('\n', '')

替换后的字符串要重新赋值,不是在原字符串上直接进行替换的:

改成这样:
for a in target_detailsitem:
    x=a.text
    x = x.replace('\n', '')
    print(x)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-31 07:49:36 | 显示全部楼层
1.请问这个里面的换行,空格还有特殊的字符为什么替换不掉呢?


Snipaste_2020-07-31_07-46-54.png

可以替换调呀,你试试运行:
import requests
import bs4
import re

url = r'https://tongling.anjuke.com/sale/zongyangxian/'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36'
}


req = requests.get(url, headers=headers)

soup = bs4.BeautifulSoup(req.text, 'html.parser')

target_housetitle = soup.find_all('div', class_="house-title")
target_detailsitem = soup.find_all('div', class_="details-item")
target_commaddress = soup.find_all('span', class_="comm-address")
target_proprice = soup.find_all('div', class_="pro-price")
target_itemimg = soup.find_all('div', class_="item-img")

for tar in target_detailsitem:
   print(tar.text.replace('\n','').replace(' ',''))


请问这种标签的class=“****”是一样的应该怎么写? target_commaddress = soup.find_all('span', class_="comm-address")这个写法对吗?


你这样写可以


target_detailsitem.span.text的话,阳光国际城&#160;&#160;枞阳县-汉武生态园-渡江路  也会被打印出来


你想提取哪些数据?


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-31 15:17:25 | 显示全部楼层
Twilight6 发表于 2020-7-31 07:49
可以替换调呀,你试试运行:



for a in target_detailsitem:
    x=a.text
    x.replace('\n', '')
    print(x)
那为什么这样写就替换不掉了呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-1 09:27:57 | 显示全部楼层    本楼为最佳答案   
lawrence1357 发表于 2020-7-31 15:17
for a in target_detailsitem:
    x=a.text
    x.replace('\n', '')

替换后的字符串要重新赋值,不是在原字符串上直接进行替换的:

改成这样:
for a in target_detailsitem:
    x=a.text
    x = x.replace('\n', '')
    print(x)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-19 17:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表