簡體   English   中英

Python Web 刮擦“無”

[英]Python Web Scraping 'None'

我正在嘗試從站點https://10times.com/losangeles-us/technology/conferences抓取事件數據。

下面的代碼繼續抓取在主登錄頁面上找到的事件數據和事件鏈接。

import pandas as pd
import bs4 as bs
import urllib.request

source = urllib.request.urlopen('https://10times.com/losangeles-us/technology/conferences').read()
soup = bs.BeautifulSoup(source,'html.parser')

aa = []
bb = []

#---Get Event Data---
table = soup.find('tbody')
table_rows = table.find_all('tr') #find table rows (tr)
for x in table_rows:   
    data = x.find_all('td')  #find table data
    row = [x.text for x in data]
    if len(row) > 2: #Exlcudes rows with only event name/link, but no data.
        aa.append(row)
df_event = pd.DataFrame(aa, columns=['Date', 'Event Name', 'Venue', 'Description', 'Type', 'Unnamed:'])
df_event.columns = ['Date', 'Event Name', 'Venue', 'Description', 'Type', 'Interested/Following Count']

#---Get Links---
h2 = soup.find_all('h2')
for i in h2:
    links = i.a['href']
    bb.append(links)
df_link = pd.DataFrame(bb)
df_link.columns = ['Links']

#---Combines dfs---#
df = pd.concat([df_event,df_link],sort=False, axis=1)
df.index += 1       

#--Export to HTML---
df.to_html('10times_Scrape.html',render_links=True)

我現在想要 go 到我拉出的每個事件鏈接並抓取頁面上的地址/完整事件描述。 示例鏈接: https://10times.com/microsoft-business-applications-summit-anaheim

事件描述和地址都可以在 P 標簽中找到。 但是,當我在鏈接中閱讀時,我只是返回 None's.. 我在下面使用正確的 div class? 我究竟做錯了什么? 我想查看 'class':'col-md-6' 並提取地址。

#---Get Address---
for i in bb:
    soup2 = bs.BeautifulSoup(i, 'html.parser')
    text2 = soup2.find('div', attrs={'class':'col-md-6'})
    print(text2)

好像你錯過了內部鏈接的urllib獲取。

#---Get Address---
for i in bb:
    inner_source = urllib.request.urlopen(i).read()

    soup2 = bs.BeautifulSoup(inner_source, 'html.parser')
    text2 = soup2.find('div', 'col-md-6')
    print(text2)

還可以使用find / find_all傳遞 class 作為第二個位置參數。 並且只是為了強制find只會返回第一次出現,即使有很多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM