Issue
I'm new to web scraping and having some trouble getting data from a webpage.
I'm trying to read this web page: https://stroit-kompanii.ru/
and trying to get company`s category and link? but soup get not all 'title'
import pandas as pd
import requests
import urllib.parse
from bs4 import BeautifulSoup
import time
headers = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Mobile Safari/537.36'
}
req = requests.get('https://stroit-kompanii.ru', headers=headers)
req.encoding = 'cp1251'
time.sleep(3)
soup = BeautifulSoup(req.text)
all_cat_list = soup.find_all('div', {'class' :'all_cat_list'})
print(all_cat_list)
out:
<a href="polimernaya_poroshko/" title="Поиск строительных компаний в разделе - Полимерная порошковая окраска">Полимерная порошковая окраска</a>
<a href="polistirolbetonnye_b/" title="полистиролбетонные блоки">Полистиролбетонные блоки</a>
<a href="poroshkovye_kraski/" title="Поиск строительных компаний в разделе - Порошковые краски">Порошковые краски</a>
<a href="prodazha_biotualetov/" title="Поиск строительных компаний в разделе - Продажа биотуалетов">Продажа биотуалетов</a>
<a href="prodazha_zemelnyh_uc/" title="Поиск строительных компаний в разделе - Продажа земельных участков, малоэтажных домов">Продаж0 7 5 5 ; L = K E C G 0 A B : > 2 , 0 ; > M B 0 6 = K E 4 > > 2 / a >
a t i t l e = " > 8 A : A B @ > 8 B 5 ; L = K E : > ? 0 = 8 9 2 @ 0 7 4 5 ; 5 - @ > 4 0 6 0 , 0 @ 5 = 4 0 = 5 4 2 8 6 8 > A B 8 7 0 @ C 1 5 6 > " h r e f = " p r o d a z h a _ a r e n d a _ n e d v / " > @ > 4 0 6 0 , 0 @ 5 = 4 0 = 5 4 2 8 6 8 > A B 8 7 0 @ C 1 5 6 > / a >
a t i t l e = " > 8 A : A B @ > 8 B 5 ; L = K E : > ? 0 = 8 9 2 @ 0 7 4 5 ; 5 - @ > 4 0 6 0 , > = B 0 6 = 0 B O 6 = K E ? > B > ; : > 2 " h r e f = " p r o d a z h a _ m o n t a z h _ n a t / " > @ > 4 0 6 0 , > = B 0 6 = 0 B O 6 = K E ? > B > ; : > 2 / a >
a t i t l e = " > 8 A : A B @ > 8 B 5 ; L = K E : > ? 0 = 8 9 2 @ 0 7 4 5 ; 5 - @ > 4 0 6 0 , > = B 0 6 ? > B > ; : > 2 " h r e f = " p r o d a z h a _ m o n t a z h _ p o t / " > @ > 4 0 6 0 , > = B 0 6 ? > B > ; : > 2 / a >
Solution
import requests
from bs4 import BeautifulSoup
import pandas as pd
r = requests.get('https://stroit-kompanii.ru/')
r.encoding = 'cp1251'
soup = BeautifulSoup(r.text, 'html.parser')
data = [('https://stroit-kompanii.ru/' + x.get('href'), x.text) for x in soup.select_one('div.all_cat_list').select('a')]
df = pd.DataFrame(data, columns = ['Url', 'Category'])
df
This will return a dataframe with all categories and urls from that page section:
Url Category
0 https://stroit-kompanii.ru/avtomatizatsiya_inzh/ Автоматизация инженерных систем
1 https://stroit-kompanii.ru/avtomaticheskie_vor... Автоматические ворота "Hoermann"
2 https://stroit-kompanii.ru/avtomaticheskie_vor... Автоматические ворота "ZAIGER"
3 https://stroit-kompanii.ru/avtomaticheskie_voro/ Автоматические ворота, двери
4 https://stroit-kompanii.ru/agentstva_nedvizhimo/ Агентства недвижимости
... ... ...
Answered By - platipus_on_fire
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.