gpt4 book ai didi

python - 如何使用 BeautifulSoup 迭代站点上的多个内部链接以输出所有电子邮件地址?

转载 作者:太空宇宙 更新时间:2023-11-03 18:40:40 28 4
gpt4 key购买 nike

我正在尝试检索 this site's 中的所有电子邮件地址内部按字母顺序排列的索引。

基本上,我正在寻找一种使用 BSoup 首先浏览所有不同字母表链接,然后浏览每个公司页面以打印所有相应电子邮件地址的方法。

我已经能够打印网站上所有公司的列表,但我不确定如何迭代另一级别的链接。我考虑过使用字典并分别为每个字母创建键,但我似乎无法让它工作。

这是迄今为止成功提取所有公司名称的代码,以及一个用于逐个单独提取电子邮件地址的正则表达式。如何最好地一次打印所有电子邮件地址?

欢迎任何意见。

from bs4 import BeautifulSoup
import requests

alphabet = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
#alphabet = ['a']

resultsdict = {}
companyname = []
url1 = 'http://www.indiainfoline.com/Markets/Company/'
url2 = '.aspx'
for element in alphabet:
html = requests.get(url1 + element + url2).text
bs = BeautifulSoup(html)
# find the links to companies
company_menu = bs.find("div",{'style':'padding-left:5px'})
# print all companies links
companies = company_menu.find_all('a')
for company in companies:
print company.getText().strip()







import re
# example company page
html = requests.get('http://www.indiainfoline.com/Markets/Company/Adani-Power- Ltd/533096').text
EMAIL_REGEX = re.compile("mailto:([A-Za-z0-9.\-+]+@[A-Za-z0-9_\-]+[.][a-zA-Z]{2,4})")
re.findall(EMAIL_REGEX, html)

最佳答案

来自做过大量网络抓取工作的人的建议:使用公司链接进行循环,打开页面并获取它找到的电子邮件(或您想要的任何数据)。我在该页面上只看到了一个电子邮件链接,因此它找到的那个链接就可以了。一个粗略的例子:

for company in companies:
company_html = requests.get(company['href'])
company_bs = BeautifulSoup(company_html)
company_page_links = company_bs('a')
for link in company_page_links:
if link['href'].startswith('mailto:'):
#You found the e-mail address!
break#Exits the loop, as you already found the address

关于python - 如何使用 BeautifulSoup 迭代站点上的多个内部链接以输出所有电子邮件地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20571084/

28 4 0
文章推荐: css - 如何限制内联 block 元素中子元素的宽度?
文章推荐: lisp - 如何在奈奎斯特中找到声音的均值/平均值
文章推荐: javascript - 滚动时如何使
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com