python - 如何在网页抓取中使用 br 标签以获得更好的输出?
问题描述
我正在尝试抓取此站点链接。我正在尝试抓取这个特定的部分,请在下面找到 HTML:
<div style="padding:20px;">
<h1>
ABDULLA SALEM CONTRACTING EST
</h1>
<strong>
<a href="directory/umm-al-quwain/umm-al-quwain/building-contractors.html" title="Building
Contractors in Umm Al Quwain">
Building Contractors
</a>
</strong>
<br> P.O. Box: 200
<br> Location: Umm Al Quwain
<br> Phone: 06-7655445
</div>
import requests
import re
import csv
from bs4 import BeautifulSoup
def comp_links():
url=requests.get("https://www.uae-business-directory.com/directory/umm-al-quwain/umm-al-quwain/building-contractors.html").text
soup=BeautifulSoup(url,'lxml')
links=soup.find_all('a', attrs={'href': re.compile("^directory/umm-al-quwain/umm-al-quwain/building-contractors/")})
return links
def comp_details(z):
filename='comp.csv'
f=open(filename,'w')
music=csv.writer(f)
a=[]
def email_format():
if 'E-Mail' in details.text:
mail=details.img['src']
email=mail.replace('typo3temp/GB/','').replace('%40','@').split('_')[0]
return email
for i in z:
comp=requests.get('https://www.uae-business-directory.com/'+i['href']).text
soup_comp=BeautifulSoup(comp,'lxml')
details=soup_comp.find('div',class_='details')
for i in details:
print(i.text)
music.writerow([i.get_text(),email_format()]) #Writing to CSV
z=comp_links()
comp_details(z)
输出是这样的:
ABDULLA SALEM CONTRACTING ESTBuilding ContractorsP.O. Box: 200Location: Umm Al Quwain电话:06-7655445
我怎样才能得到它:
- 阿布杜拉塞勒姆合同 EST
- 建筑承包商
- 邮政信箱:200
- 地点:乌姆盖万
- 电话:06-7655445
解决方案
尝试:
import requests
from bs4 import BeautifulSoup
url = "https://www.uae-business-directory.com/directory/umm-al-quwain/umm-al-quwain/building-contractors/abdulla-salem-contracting-est.html"
soup = BeautifulSoup(requests.get(url).content, "html.parser")
print(soup.h1.parent.get_text(strip=True, separator="\n"))
印刷:
ABDULLA SALEM CONTRACTING EST
Building Contractors
P.O. Box: 200
Location: Umm Al Quwain
Phone: 06-7655445
推荐阅读
- python - 如何在单独的进程中运行 Python 自定义对象,所有这些都在共享事件队列上工作?
- java - 使用 mysql 驱动程序使用 mysql 数据库设置 spring-boot 项目
- angularjs - 在 Ionic3 中使用 InAppbrowser 打开浏览器时如何禁用后退按钮
- javascript - 使用比较表。添加多个表格时的移动响应问题?
- java - 为什么 nextLine() 在我的 Java 程序中不一直等待输入?
- emacs - 如何在我的程序中清除 Emacs 回显区域?
- ansible - 从 Ansible 中的地图列表中提取属性列表的正确方法
- codeblocks - 为什么我的 MSYS2/MinGW64 设置链接没有 -l 指令的 SDL2,而不是 SDL2_ttf?
- npm - 为什么`npm install` 在版本号中添加/删除插入符号(^)?
- javascript - 如何在 Firebase 中手动拍摄多个快照