1

Я новичок в программировании и Python.Выбор URL для печати из нескольких DIVs

Я использую Python 2.7 с BeautifulSoup для извлечения всех URL-адресов с определенной страницы результатов поиска.

страница является https://www.ohiobar.org/Pages/Find-a-Lawyer.aspx?sFN=&sLN=&sPA=&sCI=&sST=OH&sZC= (это может занять некоторое время, чтобы загрузить)

код, окружающий URL выглядит следующим образом: -

<div id="content_findResults"> 
<div id="content_column1"> 
<h1 id="ctl00_ctl45_g_1e68d58d_9902_48ce_b555_5d3eb35d5624_ctl00_headingCriteria">Showing Search Results for 'OH'</h1> 
<h2 id="ctl00_ctl45_g_1e68d58d_9902_48ce_b555_5d3eb35d5624_ctl00_headingResults">Your search returned 18440 results</h2> 
<h4 id="ctl00_ctl45_g_1e68d58d_9902_48ce_b555_5d3eb35d5624_ctl00_headingYourSearch">Your search: 'State: OH'</h4> 

<ul id="ctl00_ctl45_g_1e68d58d_9902_48ce_b555_5d3eb35d5624_ctl00_resultsList"> 
<li> 
<a href="**/Pages/MemberProfile.aspx?sST=OH&amp;pID=10727**">Janet Gilligan Abaray</a></li> 
<li> 
<a href="**/Pages/MemberProfile.aspx?sST=OH&amp;pID=26507**">Kenneth Pascal Abbarno</a></li> 

Я теряюсь, как к тому, что использовать, чтобы убедиться, что я могу извлекать URls из этих нескольких DIV, UL и LI.

Я использую следующие:

def oh_crawler(): 
    url = "https://www.ohiobar.org/Pages/Find-a-Lawyer.aspx?sFN=&sLN=&sPA=&sCI=&sST=OH&sZC=" 
    code = requests.get(url) 
    text = code.text 
    soup = BeautifulSoup(text) 
    for link in soup.find('div',{'id':'content_findResult', 'id':'content_column1'},'a'): 
      href = 'https://www.ohiobar.org' + link.get('href') 
      print (href) 

Очевидно, что это не работает.

Просьба сообщить, как я могу выбрать URL для печати.

ответ

1

Вы можете получить все a элементов, содержащих MemberProfile в атрибуте href:

from bs4 import BeautifulSoup 
import requests 

url = 'https://www.ohiobar.org/Pages/Find-a-Lawyer.aspx?sFN=&sLN=&sPA=&sCI=&sST=OH&sZC=' 

with requests.Session() as session: 
    session.headers = {'User-Agent': 'Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30'} 

    response = session.get(url) 
    soup = BeautifulSoup(response.content) 

    for link in soup.select("div#content_findResults div#content_column1 ul li a[href*=MemberProfile]"): 
     print link.get("href") 

Здесь я использую CSS selector, чтобы найти a элементов.

Печать:

/Pages/MemberProfile.aspx?sST=OH&pID=10727 
/Pages/MemberProfile.aspx?sST=OH&pID=26507 
... 
/Pages/MemberProfile.aspx?sST=OH&pID=17139 
/Pages/MemberProfile.aspx?sST=OH&pID=57207 
+0

спасибо много. Несколько вопросов, если можно, пожалуйста: 1. Откуда я могу получить информацию о пользователе-агенте? 2. URL-адрес, который я опубликовал, содержит более 18 тыс. URL-адресов, но код вернул только около 1600. Как извлечь «все» URL-адреса со страницы. Нет никакой разбивки на страницы, и все URL-адреса находятся только на одной странице. Еще раз большое спасибо –

+0

Пользовательский агент @pb_ng, возможно, не требуется. Я только что использовал шаблон для подобных запросов + фрагменты кода bs4. Ваш второй вопрос будет лучше решить в отдельном потоке, если у вас возникнут трудности. Подумайте о создании нового вопроса и напишите мне ссылку здесь. – alecxe

+0

@pb_ng хорошо, может быть, я сразу знаю ответ. Установите 'lxml' и попробуйте с помощью' soup = BeautifulSoup (response.content, "lxml") '. Lmk, помогло это или нет. Благодарю. – alecxe

Смежные вопросы