Не удалось создать фрейм данных и правильно заполнить его данные в файле csv - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь очистить эту ссылку, имея всего две простые информации, но я не знаю, почему у меня такой результат, и он не может дать мне все данные, которые я ищу:

                    particulier_allinfo particulier_tel 0  ABEL KEVIN10 RUE VIRGILE67200 Strasbourg

Это код, спасибо за вашу помощь:

import bs4 as bs 
import urllib 
import urllib.request
import requests
from bs4 import BeautifulSoup
import pandas
from pandas import DataFrame
import csv


with open('test_bs_118000.csv', mode='w') as csv_file:
   fieldnames = ['AllInfo', 'Tel']
   writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
   writer.writeheader()

particulier_allinfo = []
particulier_tel = []




i=1
historyurl= "https://www.118000.fr/search?part=1&who=kevin&page=" + str(i)
historypage= urllib.request.urlopen(historyurl)
soup=bs.BeautifulSoup(historypage,'html.parser')




cat=1 
for category in soup.findAll('a',{'class':'clickable atel'}):
    print(cat)
    print(category.text)
    cat=cat+1




q=1 
for freru in soup.findAll('div',{'class':'cardbanner'}):
    print(q)
    print(freru.text)
    q=q+1




#creating the data frame and populating its data into the csv file
data = {'particulier_allinfo':[freru.text], 'particulier_tel':[category.text]}
df = DataFrame(data, columns = ['particulier_allinfo', 'particulier_tel'])
print(df)

Я также пытаюсь сделать нумерацию страниц для этого кода, так как URL длится с "page = 1, страница = 2, ..., страница = п». Если вы также можете помочь мне в этом, было бы очень приятно! Я ищу его с прошлой недели, пожалуйста, помогите!

1 Ответ

0 голосов
/ 28 апреля 2020
import requests
from bs4 import BeautifulSoup as bs
import re
import pandas as pd


def main(url):
    with requests.Session() as req:
        data = []
        for page in range(1, 11):
            print(f"Extracting Page# {page}")

            r = req.get(url.format(page))
            soup = bs(r.content, 'html.parser')

            names = [name.text for name in soup.select("h2.name.title.inbl")]
            phone = [ph.group(1) for ph in re.finditer(
                r'mainLine":"(\d+)', r.text)]
            for x, y in zip(names, phone):
                if y.startswith(("06", "07")):
                    data.append([x, y])

        df = pd.DataFrame(data, columns=["Name", "Phone"])
        print(df)
        df.to_csv("data.csv", index=False)
        print("Data Saved to data.csv")


main("https://www.118000.fr/search?part=1&who=kevin&page={}")

Вывод: Просмотр онлайн

Образец:

enter image description here

...