0

私を助けてくれてありがとう、私はウェブサイトの各ページにいるすべての人の公開連絡先情報をスクレイピングしようとしているので、URLを変更する機能とURLからソースコードを抽出する機能の3つを構築しますBeautifulSoup と 1 つを使用して変換し、最終的に名前、タイトル、電子メール、個人の Web サイト、および略歴を取得しますが、何らかの理由でわかりません。各ページの最初の要素のみを取得しています。合計をカバーしています。ページの量ですが、最初の人だけをこすり落とします。

その部分でコードを書いた方法は次のとおりです。ヒントを教えてくれたり、私がやっている間違いを見つけたりできれば、感謝します:)

def paginas(pages):
  pag = (f'https://www.hsph.harvard.edu/profiles/page/{pages}/')
  return pag

def extract(pag):
  url = requests.get(pag).text
  soup = BeautifulSoup(url, 'lxml')
  return soup

def transform(soup):
  #principal = soup.find('div', class_ = 'hsph-bootstrap')
  items = soup.find_all('div', class_ = 'grid-card grid-card-hover position-relative border rounded px-4 py-5')
  for item in items:
      try:
        #name = item.find('a').text.strip() this is another way of getting it in this website
        name = item.find('h2', class_ = 'h3 mb-0').text.strip() #siempre tendrá
      except: 
        name = 'not given'
      #Contact data. 
      website = item.find('h2', class_ = 'h3 mb-0').a['href']
      main = item.find('div', class_ = 'grid-card-content')
      bio = main.find('div', class_ = 'faculty-bio small').text.strip()
      university = 'Harvard School of Public Health'
      #INSIDE THE LINK
      wd = webdriver.Chrome(options=options)
      wd.get(website)
      insideurl = requests.get(website).text
      insidesoup = BeautifulSoup(insideurl, 'lxml')
      #BIO DATA
      insitem = insidesoup.find('div', class_ ='row rounded bg-white p-5')
      try:
        email = insitem.find('p', class_ = 'faculty-contact mb-2').text.strip()
      except: 
        email = ''
      try:
        ti = insitem.find('div', class_ = 'faculty-bio')
        title = ti.find('p').text
      except: 
        ti = ''
        title = ''
      #EXTRA DATA ON BIO. 
      try:
        bio2 = insidesoup.find('div', class_ = 'faculty-profile-container container mb-5')
        complete = bio2.find('div', class_ = 'faculty-profile-overview-section').text.strip()
      except: 
        bio2 = ''
        complete = ''

      contact = {
          'name' : name,
          'title' : title,
          'university' : university,
          'email' : email,
          'website' : website,
          'bio' : complete,
          'area' : bio,
      }
      leadlist.append(lead)
      return

leadlist =[]


for pages in range(1,127,1):
    c = paginas(pages)
    b = extract(c)
    d = transform(b) 

print(len(leadlist))

```
4

0 に答える 0